Programowanie w języku Matlab

Slides:



Advertisements
Podobne prezentacje
Praca dyplomowa inżynierska
Advertisements

Mechanizmy pracy równoległej
Deklaracje i definicje klas w C++ Składowe, pola, metody Konstruktory
Programowanie obiektowe PO PO - LAB 6 Wojciech Pieprzyca.
PASCAL (3) dr Anna Kwiatkowska.
SYSTEMY OPERACYJNE WSTĘP
Wprowadzenie do języka skryptowego PHP
Autor Roman Jędras Prowadzący: dr inż. Antoni Izworski Przedmiot:
Zakres i zasięg deklaracji Zakres : obszar programu, w którym identyfikator może być użyty zakres globalny : cały program zakres lokalny : definicja pojedynczej.
Wskaźniki. Definiowanie wskaźników Wskaźnik może wskazywać na obiekt dowolnego typu. int * w; char * Wsk_Znak; float * Wskaz_Real; Przykłady: Wskaźnik.
Wprowadzenie do Unix’a
Systemy operacyjne Wykład nr 4: Procesy Piotr Bilski.
Wykład nr 2: Struktura systemu komputerowego a system operacyjny
Programowanie w C Wykład 3
Wykład 1: Wskaźniki Podstawy programowania Programowanie w C
Temat nr 10: System przerwań
Język ANSI C Operacje we/wy
Obsługa routera Wykład: Zaawansowane sieci komputerowe
Tworzenie stron w języku WML jest zbliżone do tworzenia stron w HTML. W obydwu przypadkach używa się do tego celu znaczników (tagów). Zadaniem znaczników.
Środowiska projektowania oprogramowania systemów pomiarowych
Urządzenia systemów pomiarowych
Projekt urządzenia z interfejsem GPIB
9. KOORDYNACJA PROCESÓW WSPÓŁBIEŻNYCH PRZY UŻYCIU INTERPRETATORA
Budowa Komputera.
Komputeryzacja pomiarów
Komputerowe wspomaganie skanera ultradźwiękowego
Komputerowe wspomaganie skanera ultradźwiękowego Zbigniew Ragin Bolesław Wróblewski Wojciech Znaniecki.
Układy wejścia-wyjścia
Autor: Piotr Wojtowicz Opiekun naukowy referatu: dr inż. Cezary Worek
Podstawy programowania
Podstawy programowania II
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
LabVIEW Technologie informacyjne – laboratorium Irmina Kwiatkowska
Protokół Komunikacyjny
Wskaźnik może wskazywać na obiekt dowolnego typu. int * w; char * Wsk_Znak; float * Wskaz_Float; Przykład: Wskaźnik przechowuje adres obiektu wskazanego.
Instytut Tele- i Radiotechniczny WARSZAWA
Warsztaty programowania w języku Python
Interfejsy urządzeń peryferyjnych
Zasada działania komputera
Prezentacja Adrian Pyza 4i.
Temat 4: Rodzaje, budowa i funkcje urządzeń sieciowych.
Prezentacja i szkolenie
Sieci komputerowe.
Systemy wejścia i wyjścia Michał Wrona. Co to jest system wejścia i wyjścia? Pobierania informacji ze źródeł danych, zdolnych przesyłać sekwencje bajtów,
Prezentacja Adrian Pyza 4i.
1 Strumienie Hierarchie klas strumieniowych, strumienie bajtowe - klasy InputStream i OutputStream i ich metody, klasa File, strumienie plikowe, strumienie.
Sieci komputerowe.
Programowanie w języku C++
Projektowanie stron WWW
Zintegrowany sterownik przycisków. Informacje podstawowe Każdy przycisk jest podłączony do sterownika za pośrednictwem dwóch przewodów, oraz dwóch linii.
Podstawy programowania II Wykład 3: Obsługa plików w stdio.h.
PRACA MAGISTERSKA Wykorzystanie środowiska LABVIEW jako platformy do sterowania procesem wymuszenia w badaniach zmęczeniowych Grzegorz Sus Wydział Mechaniczny.
Komputerowe wspomaganie skanera ultradźwiękowego
Modelowanie współpracy farm wiatrowych z siecią elektroenergetyczną
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Systemy operacyjne i sieci komputerowe
Układy i systemy mikroprocesorowe
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Model warstwowy ISO-OSI
Wykład 2 Programowanie obiektowe. Programowanie obiektowe wymaga dobrego zrozumienia działania funkcji definiowanych przez użytkownika, w ten sposób będziemy.
Rejestrator danych wypadku trzeciej generacji
Dominik Benduski Michał Mandecki Podstawy Visual Basic w Excelu.
POLITECHNIKA POZNAŃSKA WBMiZ Zakład Urządzeń Mechatronicznych STEROWNIKI URZĄDZEŃ MECHATRONICZNYCH
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Wykład 4 Dr Aneta Polewko-Klim
Strumienie, Wczytywanie, Zapisywanie, Operacje na plikach
TEMAT: Zapoznanie się z funkcja LICZNIKA w sterowniku Twido
Aplikacje i usługi internetowe
TEMAT: Zapoznanie się z funkcja LICZNIKA w sterowniku Twido
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

Programowanie w języku Matlab Komunikacja z przyrządami pomiarowymi

Komunikacja z przyrządami z interfejsem RS232 s = serial('COM1'); fopen(s); s.Terminator = 'CR'; s.Timeout = 1; fprintf(s, '#02'); t = fscanf(s); fclose(s); delete(s); clear s;

utworzenie obiektu interfejsowego otwarcie połączenia obiektu z portem szeregowym ustawienie niektórych własności obiektu interfejsowego: Terminator – znak występujący na końcu wiadomości przesyłanych między komputerem a przyrządem pomiarowym (domyślnie LF) Timeout – czas oczekiwania w sekundach na zakończenie zapisu i odczytu wiadomości (domyślnie 10 s) s = serial('COM1'); fopen(s); s.Terminator = 'CR'; s.Timeout = 1;

Ustawienia własności obiektu można dokonać przy jego tworzeniu: s = serial('COM1', 'Terminator', 'CR', 'Timeout', 1) albo przy użyciu funkcji set: set(s, 'Terminator', 'CR', 'Timeout', 1) Listę wszystkich własności obiektu uzyskuje się przy użyciu funkcji get. W tym przypadku istotne są jeszcze własności: InputBufferSize = 512 OutputBufferSize = 512 BaudRate = 9600 DataBits = 8 Parity = none StopBits = 1 Podane wartości są wartościami domyślnymi, w przyrządzie pomiarowym ustawiono taką samą prędkość transmisji i format znaku.

zamknięcie połączenia obiektu z portem szeregowym zapis do bufora wyjściowego komunikatu z rozkazem dla przyrządu pomiarowego, w tym przypadku na końcu komunikatu dopisywany jest znak CR odczyt z bufora wejściowego komunikatu z odpowiedzią z przyrządu pomiarowego, znak CR zostanie również zapamiętany w zmiennej t (można też użyć funkcji fgetl lub fgets) fprintf(s, '#02'); t = fscanf(s); Podane funkcje wykorzystuje się wówczas, gdy z przyrządem pomiarowym wymieniane są komunikaty tekstowe, złożone – z wyjątkiem znacznika końca – z tzw. drukowalnych znaków kodu ASCII. Jeżeli z przyrządem wymieniane są komunikaty binarne, złożone ze znaków o dowolnych kodach, trzeba użyć funkcji: fwrite i fread. zamknięcie połączenia obiektu z portem szeregowym usunięcie obiektu z pamięci oraz przestrzeni roboczej Matlaba fclose(s); delete(s); clear s;

Operacje synchroniczne i asynchroniczne Zapis i odczyt komunikatów może się odbywać w trybie: synchronicznym (domyślnie) – do chwili zakończenia operacji blokowany jest dostęp do wiersza poleceń Matlaba, asynchronicznym – dostęp do wiersza poleceń nie jest blokowany, tryb przydatny przy przesyłaniu komunikatów o znacznych rozmiarach.

Koniec operacji zapisu następuje, gdy spełniony jest jeden z warunków: zapisano wszystkie dane (fprintf, fwrite), upłynął czas oczekiwania (j. w.). Koniec operacji odczytu następuje, gdy spełniony jest jeden z warunków: odebrano znak końca komunikatu (fscanf, fgetl, fgets), odebrano zadaną liczbę danych (fscanf, fread), upłynął czas oczekiwania (wszystkie funkcje), bufor wejściowy został zapełniony (wszystkie funkcje). W trybie asynchronicznym – także przy użyciu funkcji stopasync.

Zapis komunikatu w trybie asynchronicznym: fprintf(s, ..., 'async') Własność ReadAsyncMode określa, czy odbiór komunikatu z urządzenia pomiarowego ma się rozpocząć automatycznie (continuous) czy na polecenie użytkownika (manual), do czego służy funkcja readasync(). Własność TransferStatus – stan realizacji operacji asynchronicznej. Własność BytesAvailable – ilość bajtów zgromadzonych w buforze wejściowym.

Komunikacja sterowana zdarzeniami Typ zdarzenia Własności związane ze zdarzeniem Break interrupt BreakInterruptFcn Bytes available* BytesAvailableFcn BytesAvailableFcnCount BytesAvailableFcnMode Error* ErrorFcn Output empty* OutputEmptyFcn Pin status PinStatusFcn Timer TimerFcn TimerPeriod  – tylko przy operacjach w trybie asynchronicznym

Funkcję obsługi zdarzenia (ang Funkcję obsługi zdarzenia (ang. callback function) można zapisać w m-pliku lub w łańcuchu. Przyporządkowanie funkcji obsługi zdarzenia: s.BytesAvailableFcn = @mycallback; s.BytesAvailableFcn = {'mycallback'}; Zawartość linii definicji funkcji: function mycallback(obj, event) Argumenty obowiązkowe: obj – obiekt komunikacyjny, event – struktura z informacją o zdarzeniu.

Typ zdarzenia Pole Zawartość pola Break interrupt Type BreakInterrupt Data.AbsTime [day month year hour min sec] Bytes available BytesAvailable Error Data.Message Komunikat o błędzie Output empty OutputEmpty Pin status PinStatus Data.Pin CarrierDetect, ClearToSend, DataSetReady lub RingIndicator Data.PinValue on lub off Timer

s.TimerPeriod = 5; s.TimerFcn = @pomiar fopen(s); function pomiar(obj, event) fid = fopen('Pomiary.txt', 'a'); fprintf(obj, '#02', 'async'); readasync(obj); response = fscanf(obj); fprintf(fid, '%s %s\n', datestr(event.Data.AbsTime, 13), ... response(2:end)); fclose(fid);

Funkcji obsługi zdarzenia można przekazać więcej argumentów. s.TimerFcn = {@pomiar, 'wyniki.txt'} s.TimerFcn = {'pomiar', 'wyniki.txt'} function pomiar(obj, event, filename) fid = fopen(filename, 'a'); : fclose(fid); Funkcjom, których treść podaje się w łańcuchu nie przekazuje się argumentów.

Instrument Control Toolbox umożliwia komunikację z przyrządami pomiarowymi: przez interfejs GPIB, przez interfejs wspierany przez standard VISA (ang. Virtual Instrument Standard Architecture): RS232, USB, GPIB, VXI oraz GPIB-VXI, przez sieć komputerową przy użyciu protokołów: TCP/IP oraz UDP, użycie obiektów interfejsowych wymaga znajomości języka programowania przyrządu, obiekty przyrządowe, których użycie nie wymaga znajomości języka programowania przyrządu, korzystają z pośrednictwa sterowników: VXIplug&play, IVI (ang. Interchangeable Virtual Instruments), Matlab Instrument Driver, możliwe wykorzystanie zdarzeń,

dostępne narzędzia z interfejsem graficznym: Test & Measurement Tool – wykrywanie podłączonych przyrządów, ich konfigurowanie, zapis/odczyt danych, automatyczna generacja skryptów z zapisem sesji komunikacyjnej z przyrządem, wizualizacja zbieranych danych, eksport danych do przestrzeni roboczej Matlaba, Instrument Driver Editor – tworzenie sterowników przyrządowych, Instrument Driver Testing Tool.

Pomiar częstotliwości przy użyciu oscyloskopu firmy Tektronix d = icdevice('tektronix_tds210', gpib('ni',0,1)); connect(d); data = invoke(d, 'measure', 1); disconnect(d); delete(d); clear d;

Data Acquisition Toolbox obsługa kart pomiarowych firm: Advantech, Measurement Computing, National Instruments, zbieranie danych także za pośrednictwem karty dźwiękowej, funkcje pomiarowe są realizowane przy użyciu obiektów związanych z zasobami karty – wejściami i wyjściami: analogowymi, cyfrowymi i licznikowymi, konfigurowanie zasobów odbywa się przez ustawianie własności obiektów. możliwe wykorzystanie zdarzeń.

Pobranie bloku danych z wejść analogowych karty pomiarowej firmy Measurement Computing AI = analoginput('mcc',1); addchannel(AI,0:1); set(AI,'SampleRate',11025); set(AI,'SamplesPerTrigger',22050); start(AI); wait(AI,3); data = getdata(AI); delete(AI); clear AI;

Wykorzystanie sterowników z bibliotek dołączanych dynamicznie loadlibrary('c:\mcc\cbw32.dll','c:\mcc\c\cbw.h'); calllib('cbw32','cbSetConfig',2,0,0,7,4); [Err, ADCRes] = calllib('cbw32','cbAIn',0,0,0,0); [Err, Voltage] = calllib('cbw32','cbToEngUnits',0,0,ADCRes,0); unloadlibrary('cbw32');

sprawdza, czy biblioteka jest załadowana loadlibrary('c:\mcc\cbw32.dll','c:\mcc\c\cbw.h') unloadlibrary('cbw32') libisloaded('cbw32') libfunctions('cbw32') sprawdza, czy biblioteka jest załadowana podaje listę funkcji z biblioteki libfunctions('cbw32','-full') podaje listę funkcji wraz z ich prototypami Prototypy użytych funkcji w Matlab: int32 cbSetConfig(int32, int32, int32, int32, int32) [int32, uint16Ptr] cbAIn(int32, int32, int32, uint16Ptr) [int32, singlePtr] cbToEngUnits(int32, int32, uint16, singlePtr)

Typ danych w Matlab Typ danych w C W dokumentacji biblioteki są podane prototypy funkcji dla języków: C/C++, Visual Basic i Delphi. Prototypy użytych funkcji w języku C/C++: int cbSetConfig(int InfoType, int BoardNum, int DevNum, int ConfigItem, int ConfigVal) int cbAIn(int BoardNum, int Channel, int Range, unsigned short *DataValue) int cbToEngUnits(int BoardNum, int Range, unsigned short DataVal, float *EngUnits) Typ danych w Matlab Typ danych w C uint16 unsigned short int32 int uint16Ptr unsigned short * singlePtr float *

Ustawienie liczby kanałów analogowych: calllib('cbw32','cbSetConfig',2,0,0,7,4) InfoType ConfigVal BoardNum DevNum ConfigItem UWAGA: Nie można korzystać ze stałych zawartych w pliku nagłówkowym! InfoType – kategoria danej konfiguracyjnej, 2 to wartość stałej BOARDINFO BoardNum – numer karty w systemie, nadany przez program konfiguracyjny InstaCal DevNum – numer urządzenia, istotny w przypadku wejść-wyjść cyfrowych i układów liczników ConfigItem – numer danej konfiguracyjnej, 7 to wartość stałej BINUMADCHANS ConfigVal – wartość danej konfiguracyjnej, karta USB-1208LS może mieć 4 kanały symetryczne lub 8 niesymetrycznych

Odczyt wyniku przetwarzania A/C z wybranego kanału analogowego: [Err, ADCRes] = calllib('cbw32','cbAIn',0,0,0,0) BoardNum *DataValue Channel Range Channel – numer kanału analogowego (0-3 przy kanałach symetrycznych) Range – zakres pomiarowy, 0 to wartość stałej BIP5VOLTS, zakres pomiarowy ±5V *DataValue – wskaźnik do zmiennej z wynikiem pomiaru, wartości 0 odpowiada wskaźnik pusty Obliczenie wartości napięcia: [Err, Voltage] = calllib('cbw32','cbToEngUnits',0,0,ADCRes,0) BoardNum *EngUnits Range DataValue *EngUnits – wskaźnik do zmiennej z wartością napięcia

Użycie obiektów wskaźnikowych Typ wskaźnika Wartość początkowa wskazywanej danej ADCResPtr = libpointer('uint16Ptr',0); VoltagePtr = libpointer('singlePtr',0); calllib('cbw32','cbAIn',0,0,0,ADCResPtr); calllib('cbw32','cbToEngUnits',0,0,ADCResPtr.Value,VoltagePtr); odwołanie do wskazywanej danej