Standard Commands for Programmable Instruments
Standard Commands for Programmable Instruments, SCPI – standard komunikacji z urządzeniami pomiarowymi (oscyloskopy, multimetry, mierniki częstotliwości itp.) i laboratoryjnymi (zasilacze, generatory przebiegów). Definiuje składnię oraz podstawowe komendy, które można wydawać urządzeniom pomiarowym. Należy on do grupy najpopularniejszych standardów obsługiwanych przez wszystkich dużych producentów sprzętu pomiarowego i laboratoryjnego.
Ogólny opis[edytuj | edytuj kod]
W 1990 standard komunikacji SCPI został przyjęty przez IEEE jako standard pod numerem IEEE 488.2. Standard ten opisuje ogólną składnię, strukturę komend i formaty danych wymienianych pomiędzy komputerami a podłączonymi do nich urządzeniami pomiarowymi. W ramach standardu zdefiniowanych jest również podstawowy zestaw komend obsługiwanych przez wszystkie urządzenia (np. CONFigure - konfiguracja określonego parametru, MEASure - dokonanie pomiaru). Komendy SCPI pogrupowane są w główne klasy funkcjonalne obsługiwane przez różne typy urządzeń. Na przykład każdy zasilacz uniwersalny powinien mieć zaimplementowaną tą samą podstawową funkcjonalność klasy DCSUPPLY.
Relacja do innych standardów[edytuj | edytuj kod]
SCPI definiuje jedynie standard komend wysyłanych do urządzenia pomiarowego oraz standard odpowiedzi. SCPI nie definiuje sposobu podłączenia urządzeń do komputera (mogą być podłączone zarówno przez RS-232, USB, VXIbus, HiSLIP lub IEEE-488 (GPIB). Mimo iż oryginalnie SCPI wywodzi się z prac nad standaryzacją fizycznego interfejsu GPIB to w żaden sposób nie jest ograniczony do urządzeń podłączanych przez GPIB.
Podłączenie fizyczne: definiowane jest przez standardy typu GPIB, USBTMC (USB Test and Measurement Device) - w przypadku USB, HiSlip - w przypadku TCP/IP.
Podłączenie logiczne i utrzymanie sesji z urządzeniem, adresowanie urządzeń: najczęściej jest realizowane za pomocą standardu VISA (Virtual Instrument Software Architecture). Na tym poziomie każde urządzenie (np. oscyloskop cyfrowy) otrzymuje swój adres (typu: USB::0x1234::125::A22-5::INSTR
)
W ramach sesji utworzonej przez sterowniki VISA następuje komunikacja w języku komend SCPI. Na przykład w celu dokonania pomiaru napięcia wydane są komendy MEASure:VOLTage:DC?
Komendy te mogą być wydawane bezpośrednio przez program użytkownika, coraz częściej jednak używane są do tego celu biblioteki IVI (Interchangeable Virtual Instrument) które w przeciwieństwie do samego języka SCPI pozostawiającego większość szczegółów implementacyjnych producentom urządzeń definiują taką samą składnię dla dowolnego urządzenia danego typu - na przykład każde urządzenie obsługujące pomiar napięcia będzie musiało obsłużyć wywołanie MeasureDCVoltage()
- odpowiadające powyższemu ciągowi komend SCPI. Korzystanie z bibliotek IVI jest obecnie optymalną metodą komunikacji programów komputerowych z urządzeniami pomiarowymi. Biblioteki IVI często wewnętrznie tłumaczą wywołania typu MeasureDCVoltage() na ciąg komend SCPI.
Składnia komend SCPI[edytuj | edytuj kod]
Komendy SCPI są wysyłane w postaci tekstowej (ASCII). Komenda składa się z jednego lub więcej słów kluczowych, niektóre mogą przyjmować dodatkowe parametry. Wielkość liter nie ma znaczenia. W dokumentacji systemu SCPI oraz w literaturze przyjmuje się zapis komend częściowo dużymi, a częściowo małymi literami (np. CONFigure
, MEASure
). Część zapisana dużymi literami jest obowiązkowa, a część pisana małymi literami może zostać opuszczona w komunikacji z urządzeniem (np. zapis measure:voltage:dc
jest równoważny z MEASURE:VOLTAGE:DC
oraz z zapisem MEAS:VOLT:DC,
a zapis SYSTem:COMMunicate:SERial:BAUD?
z SYST:COMM:SER:BAUD?
).
Komendy zakończone znakiem zapytania wymagają odpowiedzi ze strony urządzenia pomiarowego, a komendy nie zakończone tym znakiem takiej odpowiedzi nie wymagają. Na przykład: MEASure:VOLTage:DC
oznacza rozkaz dokonania pomiaru - ale bez przesyłania go do komputera, ale już MEASure:VOLTage:DC?
oznacza, że po dokonaniu pomiaru należy przesłać wartość napięcia do komputera.
Odpowiedzi otrzymywane z urządzenia są zwykle w postaci tekstowej, aczkolwiek odpowiedź może przyjść również w postaci binarnej (np. komenda dla oscyloskopu WAVE:DATA?
może w odpowiedzi dać ciąg bajtów z kolejnymi wartościami składającymi się na przebieg sygnału, a komenda DISPLAY:DATA?
może w odpowiedzi zwrócić bitmapę (BMP lub GIF lub PNG) zawierającą zrzut ekranu urządzenia.
Komendy tworzą drzewo od najbardziej ogólnej do najbardziej szczegółowej. Poziomy drzewa oddzielane są znakiem ":". Na przykład MEASURE:VOLTAGE:DC
składa się z trzech poziomów. MEASure:CURRent:AC
to inna gałąź drzewa komend z klasy 'dokonaj pomiaru' - "MEASure".
Argumenty dla komendy podawane są po spacji oddzielającej drzewo komend od reszty linii. Na przykład MEASure:VOLTage:DC CHANnel1
zawiera dodatkowy argument "Channel1". TRIGger:MODe NORMal
zawiera argument "Normal" dla komendy "MODE".
Komendy mogą być oddzielane znakiem końca linii lub znakiem średnika i z wyjątkiem pierwszej komendy muszą zaczynać się od znaku ":".
Historia[edytuj | edytuj kod]
Pierwsza wersja standardu została opublikowana w 1990r. Na początku była traktowana jako część standardu IEEE-488 opisująca transmisję z urządzeniami podłączanymi poprzez szynę GPIB. Różni producenci zaczęli stosować język komend SCPI zupełnie niezależnie od sposobu fizycznego podłączenia i język ten oderwał się od reszty standardu IEEE-488. Wyłączono go do osobnego standardu IEEE-488.2. Jego rozwojem zajęło się powołane do tego celu konsorcjum SCPI.
W 2002-2003r konsorcjum SCPI weszło w skład IVI Foundation (Interchangeable Virtual Instruments Foundation) i od tego czasu standard SCPI jest utrzymywany przez tę fundację. Od tego czasu producenci oprogramowania pomiarowego coraz częściej zamiast bezpośredniego korzystania z komend SCPI zaczynają korzystać z bardziej ogólnych wywołań zdefiniowanych przez IVI w ramach klas/sterowników IVI.
Zobacz też[edytuj | edytuj kod]
- IEEE-488 (GPIB)
- Virtual Instrument Software Architecture (VISA)
- Interchangeable Virtual Instrument (IVI)
- Instrument Driver
Bibliografia[edytuj | edytuj kod]
- "Standard Commands for Programmable Instruments (SCPI)" Volume 1: "Syntax and Style" VERSION 1999.0 May, 1999 Printed in U.S.A." [1]
- "Your Guide to Getting Started with IVI Drivers" Revision 1.2 © Copyright IVI Foundation, 2012 [2]
- "SCPI Consortium" na stronach "IVI Foundation" [3]
Linki zewnętrzne[edytuj | edytuj kod]
- Oficjalna strona
- IEEE488.2-1992 Specification, Publikacja oficjalna IEEE (koszt 44.89USD)
- Open Source SCPI device library