1 / 112

Komputeryzacja pomiarów

Komputeryzacja pomiarów. Waldemar Tokarz tokarz@agh.edu.pl tel. 29-02. Literatura. LabView Manual www.ni.com . Jeffrey Travis, Jim Kring „LabVIEW for Everyone: Graphical Programming Made Easy and Fun” 2006.

artie
Download Presentation

Komputeryzacja pomiarów

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Komputeryzacja pomiarów Waldemar Tokarz tokarz@agh.edu.pl tel. 29-02

  2. Literatura • LabView Manual www.ni.com. • Jeffrey Travis, Jim Kring „LabVIEW for Everyone: Graphical Programming Made Easy and Fun” 2006. • Wiesław Tłaczała „Środowisko LabView w eksperymencie wspomaganym komputerowo” WNT 2002”.

  3. IEEE 488.*, GPIB (General Purpose Interface Bus) 1965r - HP-IB, 1MB/s. 1987 – ANSI/IEEE 488.1. 1987 – ANSI/IEEE 488.2 Standard Commands for Programmable Instruments (SCPI ). 1993 – Propozycja NI HS488, IEEE 488.3. (8 MB/s) • Odwrotna logika TTL • 0.8V 1 logiczna •  2V logiczne 0. • 1MB/s. • Maksymalna długość kabli 20 M. • Maksymalna długość pomiędzy urządzeniami 4m.

  4. Handshake NRFD (not ready for data) – Wskazuje czy urządzenie jest gotowe na przyjęcie danych. NDAC (not data accepted) – Wskazuje czy urządzenie zaakceptowało dane. DAV (data valid) – Wskazuje czy sygnał na przewodach danych są stabilne. Sygnałem tym steruje urządzenie przesyłające dane. Interface Management Lines ATN (attention) - Kontroler ustawia 1 kiedy używa linii danych do przesłania komendy, 0 do przesyłania danych. IFC (interface clear) – Kontroler ustawia 1 żeby zainicjować magistralę. REN (remote enable) – Za pomocą tej linii kontroler ustawia urządzenia w modzie REMOTE lub LOCAL. SRQ (service request) – Każde z urządzeń może zażądać od kontrolera ustawienia pracy w modzie asynchronicznej. EOI (end or identify) – Talker używa jej do zaznaczenia końca przesyłania rozkazu. Kontroler używa tego sygnału do uzyskania odpowiedzi od urządzenia na szynie danych.

  5. DIO1 DIO2 DIO3 DIO4 EOI DAV NRFD NDAC IFC SRQ ATN SHIELD DIO5 DIO6 DIO7 DIO8 REN GND DAV GND NRFD GND NDAC GND IFC GNDSRQ GND ATN SIGNAL GND

  6. Bajt DAV NRFD NDAC 1 2 3 4 5 6 1 2 3 1: NRFD HIGH -Wszyscy odbiorcy gotowi do czytania. 2: DAV LOW - Nadawca informuje, że dane są gotowe. 3: NRFD LOW - ... odbiorcy przełączają NRFD na stan 0. 4: NDAC HIGH - Wszyscy odbiorcy informują, że przeczytali bajt ... 5: DAV HIGH - ... Nadawca ustawi ponownie na 1 DAV ... 6: NDAC LOW - ... Odbiorcy przełączają na 0 NDAC. 1: NRFD HIGH - Wszyscy odbiorcy są gotowi do przyjęcia kolejnego bajta.

  7. ATN (ATtentioN): Sterowane przez kontroler polecenie do wszystkich urządzeń aby w ciągu 200 ns były gotowe na przyjęcie komendy i adresu. • IFC (InterFace Clear): resetowanie HPIB. 100 ms na odpowiedź od wszystkich urządzeń. • REN (Remote ENable): Jest używana przez kontroler do ustawienia wszystkie odbierające urządzenia na mod remote. • SRQ (Service ReQuest): Urządzenie żąda od kontrolera działania. Kontroler odpytuje przez magistrale które urządzenie wysłało rządanie i dlaczego. • EOI (End Or Identify): Kiedy ATN jest 0 EOI może być używane przez nadawcę do zaznaczenia końca przesyłania.

  8. 1 2 4 8 16 1 0 A1 A2 A3 A4 A5 Należy pamiętać, że kontroler ma swój adres nadawcy i odbiorcy Adres nadawcy = 010 10101 = 64 + 21 Adres odbiorcy = 001 10101 = 32 + 21 010 11111 = Untolk 001 11111 = Unlisten

  9. and easier to program. Figure 13.3: Status register model in IEEE 488.2

  10. * gpibdemo.cpp :  console application using Microsoft Visual C++.    Uses NI-488.2 direct entry points to GPIB-32.dll driver from National Instruments:   http://www.ni.com/gpib/win98_95cr.htm   For more info see: files included in the downloadable compat21.zip    NI-488.2M Function reference Manual for Win32 can be downloaded from:   http://digital.ni.com/manuals.nsf/   Coded by  Bengt.Lindgren@Fysik.uu.se  Dec.2000*/#include <windows.h>#include <stdlib.h>#include <math.h>#include <stdio.h>#include <iostream.h>#include "decl-32.h"    // type declarations used in GPIB-32.DLL //  NI-488.2 Function Prototypes used by this demo program static void (__stdcall *PSendIFC) (int boardID);static void (__stdcall *PEnableRemote) (int boardID, Addr4882_t * addrlist);static void (__stdcall *PSend)         (int boardID, Addr4882_t addr, PVOID databuf, LONG datacnt, int eotMode);static void (__stdcall *PReceive)          (int boardID, Addr4882_t addr, PVOID buffer, LONG cnt, int Termination);static HINSTANCE Gpib32Lib = NULL;   // global handle to DLLstatic int *Pibsta;                                          // global status variable static int *Piberr;                                          // global error variablestatic long *Pibcntl;                                     // global count variable http://www.fysik.uu.se/kurser/fy660/compendium/GPIB/default.htm

  11. void main(void) {char buf[80];      LONG buflen;Addr4882_t addr[2]={7,17};  // used GPIB addressesfloat f,v;   //  Call LoadLibrary to load the 32-bit GPIB DLL.   Gpib32Lib = LoadLibrary ("GPIB-32.DLL");   if (!Gpib32Lib) {         cout << " The LoadLibrary call to GPIB-32.DLL failed" << endl;         exit(1);         }   //  GPIB library is loaded.  Get pointers to the requested functions and globals.     Pibsta      = (int *) GetProcAddress(Gpib32Lib, (LPCSTR)"user_ibsta");   Piberr      = (int *) GetProcAddress(Gpib32Lib, (LPCSTR)"user_iberr");    Pibcntl      = (long *)GetProcAddress(Gpib32Lib, (LPCSTR)"user_ibcnt");    PSendIFC   = (void (__stdcall *)(int))               GetProcAddress(Gpib32Lib, (LPCSTR)"SendIFC");    PSend      = (void (__stdcall *)(int, Addr4882_t, PVOID, LONG, int))               GetProcAddress(Gpib32Lib, (LPCSTR)"Send");    PReceive   = (void (__stdcall *)(int, Addr4882_t, PVOID, LONG, int))               GetProcAddress(Gpib32Lib, (LPCSTR)"Receive");    PEnableRemote = (void (__stdcall *)(int, Addr4882_t *))               GetProcAddress(Gpib32Lib, (LPCSTR)"EnableRemote");

  12. if(!Pibsta   || !Piberr || !Pibcntl    ||        !PSendIFC || !PSend  || !PReceive || !PEnableRemote) {         cout << "Unable to access functions in GPIB-32.DLL" << endl;         FreeLibrary (Gpib32Lib);         exit(1);         }/*************** Ready to use GPIB *********************/   (*PSendIFC)(0);  // Initialize GPIB controller   if ((*Pibsta) & ERR) cout << "SendIFC Error " << *Piberr << endl;   (*PEnableRemote)(0, addr);  // Set all instruments in remote mode   // Set frequency on function generator (address 17)   f=1.23e3;   buflen=sprintf(buf,"FR%fHZ",f);   // HP3324// buflen=sprintf(buf,"FREQ %f",f);  // PM5138   (*PSend)(0, 17, buf, buflen, NLend);      // sends buflen characters in buf with \n added and with EOI    // Read Fluke 45 DMM (address 7)   (*PSend)(0, 7, "val?", 4, NLend);      (*PReceive)(0, 7, buf, 80, STOPend);    // Receive maximum 80 characters   buf[(*Pibcntl)]='\0';  // Use the null character to mark the end of the received string   cout << buf << endl;   v=atof(buf);   cout << v << endl;/*******************************************************/   // Cleanup before exit   FreeLibrary (Gpib32Lib);} //end

  13. FireWire IEEE 1394

  14. FireWire IEEE 1394 30 -8 V Do 60 W typowo 10 -20 W Gdy jedna para transmituje dane (D+ = 1V, D- = -1) druga pełni rolę zegara i zmienia swój stan w przypadku nie zmieniania się kolejnych bitów pierwszej pary. • Adresowanie 64 bitowe • 10 bitów – adres magistrali (1023-1(lokal)) • 6 bitów – adres węzła (63) • 48 bitów – adres rejestrów i pamięci w węźle. • 400 Mb/s na odległość 4.5m. • 1394b 3.2 Gb/s na odl. 100m optycznie. http://www.skipstone.com/compcon.html

  15. Kolejka FIFO

  16. Wpisywanie danych do rejestru Asynchronous/Isochronous Transmit Format ATF/ITF • Rozmiar pamięci bufora musi być ustalony przed zapisem do niego danych! • Wpisanie pierwszego quadletu do 80h. • Wpisz kolejne n-1 quadlety do 84h. • Wpisz ostatni quadlet paczki do 8Ch. Teraz dane są gotowe do wysłania. • 80h (ATF_First) DATA1[0:31] • 84h (AFF_Continue) DATA2[0:31] • * * • * * • 84h (ATF_Continue) DATA(n-1)[0:31] • 8Ch (ATF_Continue&Update) DATAn[0:31] • Przesłanie danych bezpośrednio do magistrali. • A0h (ATF burst write) Data1[0:31],…,DATAn[0:31]

  17. Czytanie z bufora GRF paczki „token” Bit 0- 6 – rezerwa. Bit 7-10 – Bit 11 – informuje o tym, że paczka jest kompletna. Bit 13-14 – szybkość transmisji 00 - 100 Mb/s 01 - 200 Mb/s 10 - 400 MB/s Bit 15-23 – liczba quadletów w buforze z wyłączeniem paczki znacznikowej.

  18. Transmisja asynchroniczna z PC Przesłanie pojedynczego quadletu Rządanie zapisania danych spd – określa z jaką prędkością ma być wysłana paczka (00 – 100 Mb/s, 01 – 200 Mb/s, 10 – 400 Mb/s). tLabel – etykieta transakcji unikalna dla każdej transakcji. Kojarzenie paczki odpowiedzi z paczką żądania. rt – kod ponowienia paczki (00 – nowa, 01 – retry_X, 10 – retryA, 11 – retryB. tCode – kod transakcji. priority – priorytet aktualnej paczki. destinationID – 10 bitów to adres magistrali, 6 adres węzła. destinationOffsetHigh, destinationOffsetLow (mod 4 adres).

  19. Żądanie pobrania danych spd – określa z jaką prędkością ma być wysłana paczka (00 – 100 Mb/s, 01 – 200 Mb/s, 10 – 400 Mb/s). tLabel – etykieta transakcji unikalna dla każdej transakcji. Kojarzenie paczki odpowiedzi z paczką żądania. rt – kod ponowienia paczki (00 – nowa, 01 – retry_X, 10 – retryA, 11 – retryB. tCode – kod transakcji. priority – priorytet aktualnej paczki. destinationID – 10 bitów to adres magistrali, 6 adres węzła.

  20. Przesłanie pakietu quadletów

  21. Asynchroniczna czytaniez GRF Żądanie przesłania jednego qbita.

  22. Żądanie zapisania n qb

  23. Adresowanie węzłów sieci 04h

  24. Rejestr kontrolny 08h Steruje podstawowymi operacjami kontrolera. Możliwe czytanie i zapisywanie. Wartość startowa 0000_0000h

  25. Przerwania i rejestr maski przerwań 0Ch i 10H

  26. Rejestr licznika 14h

  27. Rejestr izochronicznego portu odbiorczego 18h

  28. Rejestr kontrolny FIFO 1Ch

  29. Rejestr diagnostyczny 20h

  30. Rejestr stanu transmisji asynchronicznej (ATF) 30h

  31. Rejestr stanu ITF 34h

More Related