[DS1054Z] Rigol na smyczy - zdalne sterowanie oscyloskopem via SCPI/LXI

Oscyloskopy, multimetry, generatory, nie tylko z najwyższej półki
Awatar użytkownika
tasza
Expert
Expert
Posty: 877
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

[DS1054Z] Rigol na smyczy - zdalne sterowanie oscyloskopem via SCPI/LXI

Postautor: tasza » piątek 02 mar 2018, 23:30

#slowanawiatr

♬ ☘ Moja muzyka do kodowania ♬ ♬ ♬ ☘
♫ ♩ ♪ Voyager ⚡ ☘ ⚡ Ghost Mile ♪ ♩ ♫
https://youtu.be/ISGh4P8h7mM


Aby błysnąć w towarzystwie...

...warto znać kilka nowoczesnych, fajnie brzmiących branżowych skrótów, można nimi ewentualnie zaskoczyć przy kawie współrozmówców osiągając efekt - łooo :shock: . W przypadku maszyny Rigol 1054z dwa aktualnie dla mnie najważniejsze pojęcia to:

:idea: LXI `LAN eXtensions for Instrumentation` - czyli tak ogólnie możliwość pracy urządzenia laboratoryjnego (oscyloskop/generator/zasilacz) w otoczeniu sieciowym, póki co to najczęściej jest miedziany Ethernet z TCP/IP v4.

:idea: SCPI `Standard Commands for Programmable Instruments` - zestaw ogólnych poleceń, czy raczej specyfikacja takiego zestawu, mających strukturę hierarchiczną (ogół-szczegół) i umożliwiających wpływanie na różne, różniste aspekty funkcjonowania urządzenia, a także na pozyskiwanie informacji o aktualnym jego stanie. Medium komunikacyjnym jest w tym przypadku to, co urządzonko sobie posiada: sieć (LXI), a może USB a może zwykły RS232 czy RS485. Rigol ma dwa pierwsze, z czego sieć jest dla mnie wygodniejsza, bo nie jestem przywiązana kabelkiem USB do kompa, oscyloskop może stać w drugim końcu pokoju, aby skrętka sięgnęła. No i nie blokuje sobie slotu w hubie USB.

RIGOL ProgrammingGuide

:arrow: http://int.rigol.com/File/TechDoc/20151 ... ide_EN.pdf

Ten dokument szczerze polecam do przeglądnięcia i zastanowienia jak wykorzystać dostępny interfejs sterujący oscyloskopem, można urządzenie tresować jak się chce, w sumie to brakuje tylko skakania przez kijek.

Aby zabawka zadziałała musimy skonfigurować sobie sieć, wyszło mi na to, że w domowym routerze najlepiej ustawić stałe IP przypisane do adresu MAC, a w /etc/hosts Linuksa nazwać oscyloskop jakoś po swojemu - u mnie jest 'cukierek', ponieważ on wygląda jak paczka kolorowych żelków.

siec_IMG_0869.JPG


Tak ogólnie to Rigol komunikuje się po porcie 5555 krótkimi pakietami tekstowymi, większe ilości danych mogą ewentualnie do nas przylecieć na okazję robienia zrzutek ekranu. Tak z poziomu konsoli, jak to się mawia - z palca najprościej wykorzystać polecenia echo/netcat, załatwiają całość zagadnienia całkiem sprawnie. Można oczywiście nabazgrać coś z okienkiem, ja na przykład zrzucarkę ekraników zrobiłam w formie skryptu powłoki dostępnego na PATH, ale jak komu wygodniej. Polecenia można pisać z dużych, można z małych, ale lepiej konsekwentnie, jak czegoś Rigol nie ogarnie - na chwilkę wyświetli okienko z 'Invalid Input'

No to teraz poćwiczymy cukierkowego koleżkę, sport to zdrowie.

Przydatne polecenia SCPI

Pytałam o to na czacie kiedyś - czy da się zresetować na miękko maszynkę w przypadku zaklikanie się w kącie z ustawieniami, ale aby nie robic on-off. No to da się: przestawienie oscyloskopu w stan domyślny, choć nie zawsze dobry realizuje polecenie:

Kod: Zaznacz cały

echo '*rst' | netcat -w 20 cukierek 5555


Chwilkę to trwa, ale urządzenie budzi się w stanie mniej więcej takim jak po włączeniu zasilania.

Zatrzymanie akwizycji danych - odpowiednik guzika run/STOP

Kod: Zaznacz cały

echo ':stop' | netcat -w 20 cukierek 5555


Uruchomienie skanowania w trybie ciągłym - RUN/stop

Kod: Zaznacz cały

echo ':run' | netcat -w 20 cukierek 5555


Zrobienie migawki po złapaniu przez trigger

Kod: Zaznacz cały

echo ':single' | netcat -w 20 cukierek 5555


Wyczyszczenie 'starych przebiegów' z ekranu

Kod: Zaznacz cały

echo ':clear' | netcat -w 20 cukierek 5555


Wyświetlenie dostępnych parametrów widocznego przebiegu, cała fura tego na pół ekranu

Kod: Zaznacz cały

echo ':measure:adisplay on' | netcat -w 20 cukierek 5555


pomiary_IMG_0885.JPG


schowanie owej tabliczki

Kod: Zaznacz cały

echo ':measure:adisplay off' | netcat -w 20 cukierek 5555


Zmiana dzielnika dla sond x1 lub x10

Kod: Zaznacz cały

echo ':CHANNEL1:PROBE 10' | netcat -w 20 cukierek 5555

Kod: Zaznacz cały

echo ':CHANNEL1:PROBE 1' | netcat -w 20 cukierek 5555

Deko wkurzające to jest, ale mój egzemplarz uparcie startuje z sondą na x10, ciągle mu poprawiam...

Tryby pracy AC,DC i ziemia jak trzeba przebiegi poukładać na ekranie

Kod: Zaznacz cały

echo ':CHANNEL1:COUPLING AC' | netcat -w 20 cukierek 5555

Kod: Zaznacz cały

echo ':CHANNEL1:COUPLING DC' | netcat -w 20 cukierek 5555

Kod: Zaznacz cały

echo ':CHANNEL1:COUPLING GND' | netcat -w 20 cukierek 5555


zmiana podstawy czasu

Kod: Zaznacz cały

echo ':timebase:scale 0.001' | netcat -w 20 cukierek 5555


i tak dalej i tak dalej, zgodnie ze spisem poleceń, mnóstwo tego dali, super!

Tak ogólnie to jak chemy dowiedzieć się jaka jest aktualna wartość danego parametru czy ustawienia to dokładamy na końcu polecenia pytajnik, o tak:

Kod: Zaznacz cały

echo ':trigger:mode?' | netcat -w 20 cukierek 5555


Dostaniemy w zamian literał np. EDGE będący obowiązująca wartością

Dowody rzeczowe, że nam zadziałało

W sumie to pierwsza sprawa, od której zaczęłam rozkminiać SCPI w Rigolu - jak zrobić obrazek z tego co na ekranie. Fotografowanie aparatem oscyloskopu może i jest jakimś rozwiązaniem ale nie zawsze pasuje, na Fejsik może tak, no ale w poważniejszą pisaninę? Magazynowanie obrazków na pendrive - to przekładać trzeba w kółko gwizdek, szkoda złącza. Zostało się na koniec zdalne sterowanie, sporo o tym napisano w sieci, to przykład na którym bazowałam: https://www.theimpossiblecode.com/blog/ ... ure-linux/

I tak ogólnie to byłoby fajnie, gdyby nie to, że tam robią się pliki *.bmp o wadze 1.1MB, a ja tak nie chce. Ale wystarczy doczytać dokładnie co potrafi polecenie `display:data` i wyjdzie nam, że możemy zamienić format obrazka ( i dla *.png czy *.jpg mamy parędziesiąt kB danych), możemy od razu nakazać w skali szarości a nie w kolorze no i możemy zrobić inwersję grafiki.

podstawowy zrzut ekraniku, kolorowy (czarne tło), ładny do www

Kod: Zaznacz cały

echo ':display:data? on,off,png' | netcat -w 20 cukierek 5555 | tail -c +12 > `date '+%Y%m%d_%H%M%S'`_candy.png


20180302_201234_candy_cl.png


zrzutka kolorowa, ale w rewersie, niezła do www i może do wydruków

Kod: Zaznacz cały

echo ':display:data? on,on,png' | netcat -w 20 cukierek 5555 | tail -c +12 > `date '+%Y%m%d_%H%M%S'`_candy.png


20180302_201157_candy_in.png


zrzutka monochromatyczna w rewersie, dobra do druku

Kod: Zaznacz cały

echo ':display:data? off,on,png' | netcat -w 20 cukierek 5555 | tail -c +12 > `date '+%Y%m%d_%H%M%S'`_candy.png


20180302_201309_candy_bw.png


Fatalna kombinacja ustawień

To jeden z popularniejszych żartów - 'przygotowanie oscyloskopu do pracy', ale takie że ni diabła nie wiadomo jak plamkę wydobyć na ekran, już o całej linii nie wspominając. Niestety eksperymentując z ustawieniami urządzenia łatwo sobie zrobić takie kuku, i chyba dobrze mieć możliwość automatycznego doprowadzenia oscyloskopu do znanego sobie i jakoś uniwersalnego stanu. I na tę okazję naszkicowałam skrypcik takowy:

ogarnijsie.sh pisze:

Kod: Zaznacz cały

#!/bin/bash
declare -a scpiCommands=(   
    ":channel1:probe 1"       # sonda x1
   ":channel1:coupling AC"      # tryb AC
   ":channel1:scale 1"         # U = 1V/div
    ":trigger:mode edge"      # wyzwalanie zboczem
    ":trigger:edge:level 1"     # na 1V
   ":timebase:scale 0.0002"    # T = 200 us/div
)
echo "reset...(5sek)"
echo "*rst" | netcat -w 20 cukierek 5555
sleep 5
echo "...setup"
for cmd in "${scpiCommands[@]}"
do
   echo "$cmd"
      echo "$cmd" | netcat -w 20 cukierek 5555
   sleep 2
done


Jak nazwa wskazuje w miarę ogarnia Rigola z pierwszym kanałem gotowym do pracy i dalszych zmian ustawień, oczywiście polecenia jakie tam wpiszemy to sprawa naszego stylu pracy, potrzeb etc/itd, tak więc owocnych eksperymentów życzę i tu kończę.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
___________________________________________ ____ ___ __ _ _ _ _
J​eżeli dadzą ci papier w linie, pisz w poprzek. Juan Ramón Jiménez

Awatar użytkownika
wojtek
Geek
Geek
Posty: 1928
Rejestracja: piątek 04 wrz 2015, 09:03
Lokalizacja: JO90JK

Re: [DS1054Z] Rigol na smyczy - zdalne sterowanie oscyloskopem via SCPI/LXI

Postautor: wojtek » sobota 03 mar 2018, 19:00

No jeśli kończysz, to tylko napiszę jeszcze raz, wiedziałem że oscyloskop jest we właściwych rekach :D - dobra robota
73 Wojtek


Wróć do „Przyrządy pomiarowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość