Interchangeable Virtual Instrument

Z Wikipedii, wolnej encyklopedii

Interchangeable Virtual Instrument – standard komunikacji pomiędzy urządzeniami pomiarowymi (oscyloskopy, multimetry, mierniki) i laboratoryjnymi (zasilacze uniwersalne, generatory przebiegów) a oprogramowaniem na komputerach PC. Powstał jako rozwinięcie istniejących standardów (VISA, SCPI) i jest obecnie najbardziej uniwersalnym i najbardziej rozbudowanym zestawem wywołań (API) dla urządzeń laboratoryjnych. Jego cechami są:

  • realizacja wywołań API przy zachowaniu składni i konwencji przyjętych przez wspierane języki programowania,
  • oraz zupełne oderwanie wywołań API od budowy czy producenta danego urządzenia (uniwersalność).

Standard jest utrzymywany przez powołaną do tego celu fundację IVI Foundation.

Historia[edytuj | edytuj kod]

Od początku lat siedemdziesiątych zaczęły powstawać standardy komunikacji pomiędzy urządzeniami pomiarowymi a komputerami takie jak IEEE-488 - definiujące warstwę fizyczną połączenia. Wkrótce opracowano jednolity język dla wydawania komend do komunikacji z urządzeniami pomiarowymi - SCPI Standard Commands for Programmable Instruments. Jednak standard ten nie definiował szczegółów implementacji poszczególnych komend. Przykładowo komenda pobierające dane o przebiegu fali z oscyloskopu WAVE:DATA? dla różnych oscyloskopów mogła zwracać różną ilość danych, zakodowanych w różny sposób. Niektóre oscyloskopy wymagają kilkukrotnego podania tej komendy dla ściągnięcia do komputera całego przebiegu. Dlatego oprogramowanie używające komend SCPI musiało być modyfikowane dla obsłużenia każdego nowego typu urządzenia (np. nowy model oscyloskopu).

W 1993 roku powstała organizacja VXIplug&play Systems Alliance[1] która miała na celu doprowadzenie do sytuacji całkowitej niezależności oprogramowania laboratoryjnego od konkretnej implementacji sprzętowej urządzeń. Podobnie jak system Plug and Play dla komputerów osobistych. W trakcie tego procesu zaczęły powstawać, sterowniki VXIplug&play[2].

Gdy organizacja VSIplug&play została wchłonięta w 2002 roku przez IVI Foundation powstała nowa generacja API dla urządzeń laboratoryjnych pod wspólną nazwą Interchangeable Virtual Instrumentation potocznie znanymi pod skrótową nazwą "IVI Instrument Drivers"[3]. Pomógł w tym fakt, że organizacja ta skupiała już wtedy nadzór nad innymi kluczowymi dla tego rozwiązania standardami (np. VISA, SCPI).

Biblioteki API "IVI Instrument Drivers"[edytuj | edytuj kod]

Aby zapewnić realizację wywołań API w sposób zgodny z architekturą danego języka programowania powstały trzy główne implementacje (równolegle rozwijane przez IVI Foundation i realizujące prawie identyczne funkcje):

  1. IVI-COM driver architecture[4] jest zestawem bibliotek pozwalających na wywołania zgodne ze standardem Microsoft Component Object Model (COM). Zapewnia to obsługę z poziomu języków skryptowych - np. Visual Basic, arkuszy kalkulacyjnych i innych programów wspierających model COM.
  2. Sterowniki IVI-C są oparte na bibliotekach z których funkcje można wywoływać w sposób standardowy dla języków proceduralnych np. język programowania C. W przypadku systemu windows mają one postać bibliotek DLL.
  3. Klasy IVI.NET zostały dodane w 2010 roku i zapewniają wsparcie dla języków obiektowych[4][5]. Klasy IVI.NET są oparte na platformie .NET firmy Microsoft.

Aby zapewnić zupełną niezależność od szczegółów implementacji danego typu urządzenia pomiarowego standard definiuje wywołania i zwracane wyniki dla wszystkich głównych funkcji urządzeń pomiarowych. Na przykład każde urządzenie będące w stanie mierzyć napięcie musi w identyczny sposób obsłużyć funkcję MeasureDCVoltage(). Klasy urządzeń dla których standard definiuje dokładne API:

  • Multimetry cyfrowe (DMM) - IviDmm
  • Oscyloskopy - IviScope
  • Generatory przebiegów i funkcji - IviFgen
  • Zasilacze prądu stałego i zmiennego - IviDCPwr, IviACPwr
  • Przełączniki - IviSwtch
  • Mierniki mocy - IviPwrMeter
  • Analizatory widma - IviSpecAn
  • Generatory sygnałów RF - IviRFSigGen
  • Przetworniki - IviUpconverter, IviDownconverter, IviDigitizer
  • Liczniki / zegary - IviCounter

Ważną cechą sterowników/bibliotek IVI jest wbudowany tryb symulacji. Każdą bibliotekę funkcji IVI można podłączyć do aplikacji w trybie symulacji - nawet bez podłączenia do wspieranego przez nią urządzenia. Dzięki temu producent aplikacji może napisać i przetestować aplikację nie mając fizycznego dostępu do urządzeń z którymi docelowo ma współpracować.

Relacja do innych standardów[edytuj | edytuj kod]

Standard IVI definiuje standardowe wywołania API, które dla dowolnego urządzenia ma zapewnić identyczną w skutkach reakcję (np. pomiar napięcia i zwrócenie wyniku do aplikacji). Nie definiuje on sposobu komunikacji z urządzeniem.

Komunikacja z urządzeniem jest najczęściej realizowana przy pomocy języka SCPI Standard Commands for Programmable Instruments. Nawiązywanie połączenia z urządzeniem, tworzenie sesji, odnajdowanie urządzeń podłączonych do komputera itp. realizowane są najczęściej poprzez standard VISA Virtual Instrument Software Architecture

Warstwę fizyczną (fizyczny sposób przekazania komunikatu do urządzenia) zapewniają standardy USBTMC (USB Test and Measurement Device) w ramach standardu USB HiSLIP (w ramach TCP/IP), IEEE-488 (GPIB), RS-232 i inne.

Przykładowy program używający biblioteki IVI[edytuj | edytuj kod]

W poniższym przykładzie fragmentu kodu w języku C# programista odwołuje się do cyfrowego multimetru (DMM), otwiera go w trybie symulacji (bez prawdziwego podłączenia do urządzenia), dokonuje pomiaru napięcia i wypisuje wynik na konsolę. Przy czym nie ma znaczenia jakiego producenta i jaki jest typ multimetru.

iviDmm dmm = new iviDmm();

dmm.Initialize("GPIB::23", false, true, "simulate=true");
dmm.DCVoltage.Configure(1.5, 0.001);
dmm.Trigger.Delay = 0.01;

double reading;
reading = dmm.Measurement.Read(1000);

Console.WriteLine("The measurement is {0}",reading);
Console.ReadLine(); 

dmm.Close();

Przypisy[edytuj | edytuj kod]

Zobacz też[edytuj | edytuj kod]

Inne strony związane z tematem[edytuj | edytuj kod]