Virtual Instrument Software Architecture

Z Wikipedii, wolnej encyklopedii

Virtual Instrument Software Architecture (VISA) – jeden ze standardów wspomagających komunikację komputerów PC z urządzeniami laboratoryjnymi (zasilacze, generatory przebiegów) i pomiarowymi (multimetry, oscyloskopy itp). Jest to standard zaimplementowany w sprzęcie i sterownikach wielu różnych firm produkujących urządzenia pomiarowe, takich jak Agilent Technologies, Rigol, Anritsu, Bustec, Keysight Technologies, Kikusui, National Instruments, Rohde & Schwarz i Tektronix.

Sposób realizacji[edytuj | edytuj kod]

Biblioteki VISA prezentują swoje funkcje przez standardowe mechanizmy wywoływania funkcji z bibliotek systemowych – w przypadku Windows jest do API języka C poprzez biblioteki DLL – visa32.dll oraz poprzez wywołania w technologii Component Object Model (COM). Istnieją również implementacje standardu VISA w postaci klas środowiska .NET – jedna z nich jest rozwijana przez IVI Foundation, inna dostępna również do darmowego pobrania implementacja została utworzona przez firmę National Instruments (NI VISA), jeszcze inna przez firmę AGILENT. Co do zasady biblioteki te powinny być wymienne i aplikacje powinny móc w identyczny sposób korzystać z każdej z wymienionych implementacji.

Oprócz wymienionych implementacji w postaci bibliotek z wywołaniami języka C, wywołaniami COM i klasami .NET są mniej lub bardziej zaawansowane implementacji standardu dla mniej popularnych języków programowania.

Historia[edytuj | edytuj kod]

Pierwsza wersja standardu powstała w 1995 roku. Początkowo standard był utrzymywany przez VXIplug&play Systems Alliance. Obecnie (od 2006r) standard jest rozwijany przez IVI Foundation jako część rodziny standardów związanych ze sprzętem pomiarowym i laboratoryjnym.

Główne funkcje[edytuj | edytuj kod]

Standard VISA nie obejmuje całego obszaru komunikacji z urządzeniami – nie obejmuje np. sposobu fizycznego podłączenia urządzeń, nie obejmuje również języka komend którymi można sterować urządzeniami pomiarowymi. Natomiast stanowi bazę dla zestawiania sesji z urządzeniami pomiarowymi, adresowania urządzeń podłączonych do komputera (bezpośrednio lub przez sieć LAN), jak również umożliwia prostą wirtualizację zasobów (jakim jest sprzęt laboratoryjny) – dzięki czemu dwie lub więcej aplikacje mogą korzystać z jednego fizycznego urządzenia. Na przykład dwa różne programy zainstalowane na komputerze mogą pobierać wyniki pomiaru napięcia przez miernik napięcia. Jeden z tych programów może wyświetlać wartości dla użytkownika, a drugi równolegle zapisywać wyniki pomiarów do pliku.

Zarządzanie zasobami i wirtualizacja[edytuj | edytuj kod]

Głównymi funkcjami oferowanymi przez VISA są: zarządzanie zasobami (podłączone bezpośrednio i przez sieć urządzenia) oraz nawiązywanie połączeń, trzymanie sesji, zlecanie urządzeniom pracy w trybie synchronicznym i asynchronicznym.

Każde urządzenie w standardzie VISA otrzymuje swój unikalny adres – zawierający sposób podłączenia / kod producenta sprzętu i (zwykle) końcówkę INSTR oznaczającą urządzenie pomiarowe / laboratoryjne. Przykładowe adresy: USB0::0x1AB1::0x04CE::DS1ZA170401761::INSTR – urządzenie podłączone przez USB

TCPIP0::192.168.0.100::INSTR – urządzenie podłączone przez sieć LAN

GPIB0::0x04CE::DS1ZA170401761::INSTR – podłączone przez IEEE-488

Nawiązywanie połączeń i utrzymywanie sesji[edytuj | edytuj kod]

Z urządzeniami tymi można nawiązać sesję – dwa główne typy sesji to MessageBasedSession oraz RegisterBasedSession (dostępne są również inne odnoszące się do poszczególnych sposobów podłączenia urządzeń – PXISession, SerialSession TcpipSession itp). MessageBasedSession to trwałe (na poziomie logicznym) połączenie z urządzeniem w ramach którego można do urządzenia wysyłać rozkazy i odbierać dane.

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

Specyfikacja VISA nie obejmuje sposobów fizycznego podłączenia sprzętu pomiarowego – obejmują je standardy takie jak USBTMC, IEEE-488, HSLiP, GPBIB. Jednak sposoby podłączenia muszą mieć swoje odzwierciedlenie w adresowaniu VISA.

Specyfikacja VISA nie obejmuje tego jakie rozkazy są wysyłane i jakie rozkazy są zwracane. To zagadnienie obejmuje najczęściej standard SCPI lub sterowniki IVI.

Sposób użycia w aplikacjach użytkownika[edytuj | edytuj kod]

Prawie nigdy standard VISA nie jest używany samodzielnie, lecz jako jeden z komponentów przy tworzeniu aplikacji pomiarowej. Przykładowo – zakładamy, że sterowniki USB są zainstalowane w systemie. Programista w kodzie aplikacji odwołuje się do nich poprzez VISA – tworząc połączenie z lokalnie podłączonym przez port USB oscyloskopem: MessageBasedSession mb=ResourceManager.GetLocalManager(). Open("USB0::0x1AB1::0x04CE::DS1ZA170401761::INSTR") Od tej chwili może odwołać się do obiektu mb i za pomocą niego wysłać do oscyloskopu komendę dokonania pomiaru – sama komenda jest już objęta innym standardem – SCPI: mb.Write(":MEASURE:VOLTAGE:DC?"); string s=mb.Read()

Często programiści nie muszą wprost odwoływać się do obiektów VISA – na przykład w przypadku sterowników IVI obsługa standardu VISA jest ukryta w impementacji tych ostatnich.

Zobacz też[edytuj | edytuj kod]

Bibliografia[edytuj | edytuj kod]