Pomiary oscyloskopowe okiem praktyka. cz. 10.pdf

(2276 KB) Pobierz
065-068_tespol_cz10.indd
POMIARY
Pomiary oscyloskopowe:
okiem praktyka, część 10
Dziesiątą część cyklu artykułu
poświęcamy pokazaniu
praktycznych zagadnień
związanych z komunikacją
nowoczesnych oscyloskopów
firmy Tektronix z komputerami
PC. Na płycie CD–EP10/2007B
publikujemy oprogramowanie
narzędziowe i przykładową
aplikację opracowaną przez
autora.
Komunikacja oscyloskopu
z komputerem
Rezultaty pomiarów wykona-
nych oscyloskopem cyfrowym moż-
na archiwizować na kilka sposobów.
Najprostszym z nich, i prawie za-
wsze dostępnym, jest zapis danych
w pamięci referencyjnej. Jej pojem-
ność jest jednak zwykle ograniczona
do kilku przebiegów. Coraz częściej
oscyloskop cyfrowy oferuje zapis na
zewnętrznym nośniku, jak np. karty
Compact Flash. Zapisuje się zarów-
no obraz z ekranu do pliku graficz-
nego, dane z rekordu akwizycji, jak
i komplet nastaw przyrządu. O wiele
większą funkcjonalność oferuje po-
łączenie oscyloskopu z komputerem.
Do niedawna była to dodatkowa op-
cja, obecnie takie rozwiązanie staje
się prawie standardem. W prostych
modelach mamy do dyspozycji po-
łączenie poprzez RS232, GPIB, LAN
lub USB. Bardziej zaawansowane
konstrukcje wyposażone są we włas-
ny komputer PC, gdzie komunikacja
odbywa się np. poprzez wewnętrzny
interfejs PCI. Wraz z oscyloskopem
otrzymujemy napisany przez produ-
centa program komunikacyjny. Jego
możliwości nie zawsze zgodne są
z naszymi potrzebami i oczekiwania-
mi. W tym odcinku postaram się
przekonać Czytelników, że napisanie
własnej aplikacji może być bardzo
łatwe i szybkie.
Przedstawiony w dalszej części
przykład dotyczy oscyloskopów Tek-
tronix TDS1000B i TDS2000B wy-
posażonych fabrycznie w port USB.
Nic jednak nie stoi na przeszkodzie,
aby podobne rozwiązanie zastosować
do wcześniejszych modeli tego pro-
ducenta. Warunkiem jest jednak ja-
kikolwiek port komunikacyjny, który
w poprzednich wersjach oscylosko-
pów dostępny był jako dodatkowa
opcja. Potrzebny także będzie kom-
puter PC z systemem Windows.
Napisanie własnej aplikacji ko-
munikacyjnej bazuje na wykorzy-
staniu funkcji biblioteki TekVISA,
dostarczanej wraz z nowym przy-
rządem. Można ją także bezpłat-
nie pobrać z internetowej strony
producenta ( www.tek.com ). Wersja
3.02 jest dostępna na płycie CD–
EP120/2007B. Plik instalacyjny ma
rozmiar 75 MB (w najnowszej wer-
sji 3.3 nawet 109 MB). Zawiera on
jednak dodatkowe składniki, m.in.
kilka aplikacji oraz wiele przykła-
dów w języku C. Po zainstalowaniu
znajdują się one w domyślnym ka-
talogu C:\VXIpnp .
TekVISA jest opracowaną przez
Tektronix implementacją bibliote-
ki I/O VISA ( Virtual Instrument Sof-
tware Architecture ). Ogólny schemat
jej udziału w komunikacji pomiędzy
przyrządem pomiarowym a środowi-
skiem, w którym tworzy się własną
aplikację, przedstawiono na rys. 53 .
Jak widać, program użytkownika od-
wołuje się po prostu do interfejsu
programowania TekVISY. Dokładnie
jest on opisany w instrukcji obsługi
TekVISA Programmer Manual ”.
Wbrew pozorom, napisanie włas-
nego programu komunikacyjnego jest
dość proste. Ponieważ przykłady w C
oraz Visual Basicu dostarczone są
przez producenta, w artykule przed-
stawiono wykorzystanie środowiska
Delphi. Bezpłatne wersje Delphi Per-
sonal są dostępne na stronie firmy
Borland. Autor korzystał ze starszej
wersji Delphi 5.0 Standard.
Przed przystąpieniem do tworzenia
programu należy zainstalować z po-
ziomu Delphi odpowiednią kontrolkę
ActiveX. Zakładając, że TekVISA jest
już zainstalowana wcześniej, wykonu-
je się to poprzez wybranie z menu
Component–>Import ActiveX Control… .
W oknie dialogowym należy wybrać
Elektronika Praktyczna 10/2007
65
681977973.006.png 681977973.007.png
POMIARY
Rys. 54.
Rys. 53.
FindList umieszcza listę wszyst-
kich podłączonych urządzeń w tab-
licy wariantowej dev . Jeśli lista ta
okaże się pusta, informujemy o tym
poprzez wyświetlenie odpowiednie-
go komunikatu w polu listy ListBox1 .
W przeciwnym wypadku wpisujemy
tam spis wszystkich połączeń. Do
pola Tvc.Descriptor wpisujemy na-
zwę kolejnego połączenia i od tej
pory Tvc odnosi się do urządzenia
związanego z tym połączeniem. Za
pomocą funkcji Query wysyłamy do
każdego z urządzeń zapytanie *IDN?
i odczytujemy identyfikujący je ciąg
znaków. Zapisujemy go następnie na
odpowiedniej pozycji listy ListBox2 .
Jeśli do komputera podłączony jest
jeden oscyloskop, to wynik działania
programu powinien być podobny do
przedstawionego na rys. 55 .
Aby skomunikować się z do-
wolnym dołączonym do komputera
przyrządem, należy do pola Tvc.De-
scriptor wpisać nazwę danego połą-
czenia dostępną poprzez dev[i] . Na-
stępnie, za pomocą Tvc.WriteString
zapisać wymagane polecenie i ko-
rzystając z Tvc.ReadString odczytać
ewentualną odpowiedź. Spis komend
dla oscyloskopów Tektronix, TDS200,
TPS2000 i TDS1000/TDS2000 znajdu-
je się w podręczniku programowania
dostępnym na internetowej stronie
producenta oraz na płycie dołączo-
nej do tego wydania EP.
Pobranie obrazu z ekranu oscylo-
skopu do schowka systemu Windows
wydaje się banalne. Obiekt Tvc po-
siada bowiem metodę HardcopyToC-
lipboard . Odczytany rysunek wystar-
czy tylko przenieść do np. obiektu
klasy TImage . Należy pamiętać, że
aby odwoływać się do systemowego
schowka, trzeba w sekcji uses dodać
TekVISA Control (przedstawiono to na
rys. 54 ) oraz wcisnąć Install… i po-
twierdzić w pojawiającym się oknie
Install . Od tego momentu w zakładce
ActiveX palety komponentów dostęp-
ny będzie komponent Tvc ( TekVISA
Control ). Opis związanych z nim właś-
ciwości, metod oraz zdarzeń znajduje
się pliku pomocy Tvc.chm w katalogu
C:\VXIpnp\WINNT\TekVISA\Bin .
Po zainstalowaniu TekVISY warto
uruchomić aplikację InstrumentMana-
gera , wybrać SearchCriteria i pozo-
stawić tylko te interfejsy, które będą
wykorzystywane. Instrument Manager
uruchamia się poprzez menu konteks-
towe ikony VISA w podajniku syste-
mowym lub poprzez Start–>Programy–
>TekVISA .
Mając już przygotowane środowi-
sko pracy, przystąpmy do napisania
prostego programu, umożliwiającego
odbieranie obrazów z ekranu oscylo-
skopu. Na początek, na czystej formie
nowego projektu umieszczamy kolej-
no cztery komponenty: kontrolkę Tvc ,
przycisk polecenia Button oraz dwie
listy ListBox1 i ListBox2 . Po wciśnięciu
przycisku lista pierwsza powinna za-
wierać spis podłączonych przyrządów,
a lista druga ich identyfikację. W tym
celu w obsłudze zdarzenia OnClick
przycisku wpisujemy kod widoczny
na list. 1 .
List. 1.
var
i: integer;
dev: Variant;
begin
Tvc.SearchCriterion:= 0;
dev:= Tvc.FindList;
ListBox1.Clear;
ListBox2.Clear;
// dev zawiera teraz listę podłączonych urządzeń,
// sprawdzamy czy jakiekolwiek są aktualnie dołączone
if (varType(dev) <> varEmpty) then
begin
// identyfikujemy każde z połączeń oraz urządzeń dołączonych
for i:= 1 to VarArrayHighBound(dev, VarArrayDimCount(dev))) do
begin
ListBox1.Items.Add(dev[i]);
Tvc.Descriptor:= dev[i];
ListBox2.Items.Add(Tvc.Query(‘*IDN?’));
end;
// jeśli brak jest połączeń wyświetlamy informację o tym
end else ListBox1.Items.Add(‘Brak połączenia z oscyloskopem’);
end;
66
Elektronika Praktyczna 10/2007
681977973.008.png 681977973.009.png
POMIARY
Elektronika Praktyczna 10/2007
67
681977973.001.png 681977973.002.png
POMIARY
List. 2.
var
retCnt: longint;
begin
Tvc.WriteString(‘Hardcopy Start’);
Tvc.ReadToFile(‘temp’, 80000, retCnt);
Image.Picture.Bitmap.LoadFromFile(‘temp’);
end;
Rys. 55.
Wysłanie komendy Hardcopy Start
spowoduje skopiowanie aktualnej za-
wartości ekranu. Metoda ReadToFile
pozwala naszemu programowi odczy-
tać dane do pliku o nazwie temp , któ-
ry domyślnie zostanie założony w tej
samej lokalizacji, co uruchomiony
program. Drugi parametr funkcji Re-
adToFile określa maksymalny rozmiar
pliku w bajtach. Mapa bitowa pobrana
z oscyloskopu TDS1000 ma rozmiar
ok. 77 kB, stąd widoczne 80000. Jeśli
teraz do projektu dodamy obiekt TI-
mage oraz dopiszemy kod z list. 2, to
przy dołączonym do komputera oscy-
loskopie (przy tylko jednym przyrzą-
dzie Tvc odnosi się właśnie do nie-
go) otrzymamy rezultat podobny do
przedstawionego na rys. 56 . Kolejne
wciskanie przycisku spowoduje pobra-
nie następnego obrazu. W zależności
od interfejsu komunikacyjnego, może
to trwać kilka lub nawet kilkadziesiąt
sekund. Dla połączenia poprzez USB
jest to czas rzędu 3…5 s. Niestety,
komunikacja tego typu poprzez TekVI-
SĘ nie pozwoli na pracę całkowicie
on–line .
Przedstawione rozwiązanie ma jed-
nak poważną wadę. Podczas pobie-
rania danych do pliku, aplikacja nie
reaguje na polecenia użytkownika.
Gdyby kolejny obraz miał być pobie-
rany zaraz po poprzednim, to w ta-
kich warunkach ciężko byłoby nawet
zamknąć program. Wstawienie Appli-
cation.ProcessMessages nie na wiele
się przydaje. Istnieje jednak i na to
rada. Pobieranie danych do pliku na-
leży zrealizować w osobnym wątku.
W tym celu z menu File–>New trze-
ba wybrać ThreadObject . Kod z list. 2.
umieszczamy w procedurze Execute
nowego wątku, pamię-
tając o wpisaniu nazw
modułów w odpowied-
nich sekcjach uses .
Pewnej ostrożności
wymaga zakończenie
wątku. Aby program
poprawnie zamknąć
w dowolnym momen-
cie, należy najpierw
dokończyć trwający
proces pobierania da-
nych, zakończyć wątek
i dopiero zamknąć program. Na płycie
CD–EP10/2007B znajduje się przykła-
dowy projekt przygotowany przez au-
tora. Po wciśnięciu przycisku Połącz
pobiera on nazwy wszystkich aktual-
nych połączeń. Następnie dla pierw-
szego przyrządu z listy (zakładamy,
że jest to oscyloskop wymienionej na
wstępie serii) wykonuje odczytywanie
obrazu z ekranu i wyświetla go. Od
tego momentu do chwili zamknięcia
programu pobieranie jest cykliczne.
Podczas pobierania danych aplikacja
zachowuje ‘mobilność’ umożliwiając
np. zmianę rozmiarów okna. Wynik
jej działania przedstawia rys. 57 . Na
etapie przedstawionym w artykule,
program komunikacyjny nie wykonuje
nic szczególnego, ale może stanowić
podstawę dla bardziej zaawansowa-
nych zadań. Poza obrazami z ekranu,
TekVISA umożliwia pobieranie da-
nych z rekordu akwizycji. Stąd już
tylko krok do generowania dowol-
nych przebiegów matematycznych
i napisania aplikacji do np. pomiaru
mocy strat w elemencie przełączają-
cym. W poprzednim odcinku przed-
stawiony był wynik działania takiego
programu, stworzonego w firmie Tek-
tronix. Mam jednak nadzieję, że za-
prezentowany prosty przykład zachę-
ci Czytelników do napisania własnej
wersji, tym bardziej, że środowisko
Delphi oferuje w tym zakresie chy-
ba największe ułatwienia. Uzyskanie
funkcjonalności podobnej do aplikacji
pomiarów mocy dla oscyloskopów se-
rii TPS2000, można uzyskać poświę-
cając jeden z nadchodzących, długich
zimowych wieczorów.
Andrzej Kamieniecki
ClipBrd . Jak się okazuje w praktyce,
nie jest to najlepsza droga. Co praw-
da obraz można odczytać i przenieść
w dowolne miejsce, jednak czasem
jest to ostatnia, dająca się wykonać
operacja. Powtórne wywołanie Hardco-
pyToClipboard zazwyczaj skutkuje za-
wieszeniem programu lub wygenero-
waniem błędu I/O. Co więcej, dostar-
czany wraz z TekVISĄ pasek narzędzi
WordToolbar , zachowuje się w taki
właśnie sposób podczas kopiowania
obrazów z ekranu. W celu prześledze-
nia tego, co tak naprawdę robi wspo-
mniana procedura można wykorzystać
program CallMonitor . Uruchamia się
go z menu kontekstowego ikony VISA,
widocznej w podajniku systemowym.
Problem jednak w tym, że przy uru-
chomionym CallMonitorze wszystko
przebiega poprawnie.
Na szczęście istnieją też inne spo-
soby pobrania obrazu. Wykorzystamy
pobieranie do pliku, a następnie wy-
świetlenie jego zawartości za pomo-
cą metody LoadFromFile . Nie jest to
szczególnie wyrafinowane rozwiązanie,
niemniej skuteczne. Aby obraz z ekra-
nu oscyloskopu przenieść do obiektu
TImage wystarczy zaledwie kilka linii
kodu widocznych na list. 2 .
Rys. 56.
Rys. 57.
68
Elektronika Praktyczna 10/2007
681977973.003.png 681977973.004.png 681977973.005.png
Zgłoś jeśli naruszono regulamin