Wyższa Szkoła Gospodarki w Bydgoszczy
PRACOWNIA METROLOGII
ĆWICZENIE 8:
Komunikacja przyrządów wirtualnych z blokiem
sprzętowym
Cel ćwiczenia:
Zapoznanie się ze sposobem komunikowania się przyrządu wirtualnego ze sprzętem.
Wykorzystywany sprzęt:
Multimetr METEX M3850D z termoparą, płytka prototypowa S.C. – 2075, USB 6008,
elementy elektroniczne.
Wprowadzenie
Jedną z najczęściej spotykanych w elektronice sposobów komunikacji między komputerem
a urządzeniem jest przesyłanie danych łączem szeregowym RS 232.
Opis standardu RS 232
Standard RS – 232C (Recommended Standard) został ustanowiony w 1969 r. przez Electronic
Industries Association. Definiuje on sposób nawiązania i przeprowadzenia łączności między
dwoma urządzeniami tzw. DTE ( Data Terminal Equipment) za pośrednictwem modemów
tzw. DCE (Data Communication Equipment) lub bez nich. Jest to obecnie standard łącza
szeregowego do połączenia komputera PC z urządzeniami zewnętrznymi.
Połączenia między urządzeniami (DTE – DCE lub DTE – DTE) dokonuje się za pomocą
złączy 25 – stykowych lub 9 – stykowych.
Przygotował Grzegorz Śmigielski
1
Najważniejsze linie magistrali RS– 232C podane są w tabeli poniżej
Nazwa
Sygnał
Opis
9-pin 25-pin
Kierunek z
Data Carrier Detect
DCD
Gotowość łącza
1
8
DCE
Receive Data
RD
Dane odbierane
2
3
DCE
Transmit Data
TD
Dane wysyłane
3
2
DTE
Data Terminal
Ready
DTR
Terminal gotowy do
transmisji danych
4
20
DTE
Signal Ground
SG
Masa sygnałowa
5
7
-
Data Set Ready
DSR
Dane gotowe do
transmisji
6
6
DCE
Request to Send
RTS
DTE gotowy do
wysłania danych
7
4
DTE
Clear to Send
CTS
DCE gotowy do
przyjęcia danych
8
5
DCE
Ring Indicator
RI
Sygnał dzwonienia
9
22
DCE
Frame Ground
FG
Masa obudowy
-
1
-
Opis linii
Linie Danych
TxD – dane nadawane.
RxD – dane odbierane
Linie sterujące
RTS – żądanie nadawania danych zgłaszane przez terminal DTE
CTS – gotowość do nadawania zgłaszana przez modem DCE (przesyła potwierdzenie
odebrania sygnału RTS)
DSR – gotowość modemu DCE do dalszej współpracy z DTE (aktywny przez cały czas
trwania połączenia)
DTR – gotowość DTE do dalszej współpracy z DCE (aktywny przez cały czas trwania
połączenia)
DCD – sygnał wykrycia przez modem fali nośnej (oznacza, że łączy się on z innym
modemem)
Linie masy:
SG – masa sygnałowa
Przygotował Grzegorz Śmigielski
2
PG – masa ochronna połączona z obudową urządzenia
Istnieje wiele sposobów wykorzystania różnych podzbiorów tych linii. W najprostszym
przypadku wykorzystuje się tylko 3 linie:
TxD – dane nadawane
RxD – dane odbierane
SG – masa sygnałowa
Proste połączenie dwóch urządzeń pracujących w standardzie RS-232 nie gwarantuje sukcesu.
Bierze się to stąd, że urządzenia mogą mieć różne wymagania co do handshakingu
(synchronizacji transmisji). Poza tym przy łączeniu urządzeń tego samego typu należy
krzyżować przewody.
Jeżeli łączymy urządzenie typy DTE (komputer) z urządzeniem z DCE (modem) to styki
łączymy wprost. Jeżeli komputer do komputera to używamy tzw. konfiguracji null modem.
Na przykład dla wtyków 9-cio pinowych:
Łączenie urządzenia DTE z DCE
Synchronizacja transmisji
Linie DTR, DSR, RTS, CTS i DCD umożliwiają synchronizację transmisji tak, dane były
wysyłane zawsze wtedy, gdy urządzenie po drugiej stronie połączenia jest gotowe do ich
odbioru. Prosty przykład transmisji jednokierunkowej (simplex) może wyglądać następująco:
1. Aby transmisja była możliwa oba urządzenia muszą ustawić linie gotowości na „1”.
Gotowość komputera (DTR) i modemu (DSR) musi być utrzymywana na „1” przez
całą transmisję.
2. Komputer ustawia RTS (żądanie nadawania) na „1”
3. W odpowiedzi na RTS modem ustawia linię CTS (gotowość do nadawania) na „1”
4. Widząc to komputer rozpoczyna nadawanie
Przygotował Grzegorz Śmigielski
3
symbol
stan linii
uwagi
DTR
komputer gotowy
DSR
modem gotowy
RTS
żądanie nadawania
CTS
gotowość do nadawania
TxD
transmisja danych do
modemu
Transmisja liniami danych
Przesyłanie informacji następuje w sposób szeregowy bit po bicie. Stany logiczne 0 i 1
kodowane są stanami napięć (lub wartościami prądu). Najczęściej przesyłane są znaki danych
zapisane w kodzie ASCII. Każdy znak danych zawiera od 5 do 8 bitów i poprzedzony jest
bitem START, a zakończony bitem kontroli parzystości (Pa) i 1 do 2 bitami STOP. Bity
danych wraz z bitem kontrolnym i bitami synchronizacji (start, stop) tworzą tzw. jednostkę
informacyjną SDU (Serial Data Unit).
Bit START uruchamia zegar zapewniający właściwą synchronizacje odczytu. Częstość pracy
tego zegara (=1/tB) określa szybkość transmisji. Typowe prędkości transmisji wynoszą: 300,
600, 1200, 2400, 4800, 9600, 19 200 b/s (bitów/sekundę).
Ramka danych
Ze względu na duże prędkości transmisji i związane z tym zniekształcenia sygnału,
przetwarzanie szeregowego strumienia danych napływających do odbiornika musi odbywać
się w sposób bardziej skomplikowany.
Odbiornik pracuje z częstotliwością 16-krotnie większą, niż wynikałoby to z ustalonej
szybkości łącza, a każdy bit jest próbkowany 16 razy. Wynik pobrania 16 próbek jest
Przygotował Grzegorz Śmigielski
4
uśredniany i na podstawie tej operacji badanemu wycinkowi czasu jest przyporządkowany
odpowiedni sygnał logiczny.
Bity danych są przesyłane w kolejności od najmniej znaczącego D0 (LSB), do najbardziej
znaczącego (MSB).
Bit kontroli parzystości jest elementarnym i mało efektywnym sposobem zabezpieczenia
danych przed przekłamaniami. Może on oznaczać parzystą, nieparzystą liczbę ustawionych
bitów w polu danych, może być ustawiony na stałe, na stałe wyzerowany lub pominięty.
W przykładzie powyżej zastosowano następujące parametry transmisji:
•
8 bitów danych
•
bit parzystości
•
2 bity stopu
i nadano liczbę: 01101001
b
= 69
h
= 105
dec
= „i”. Liczba zawiera parzystą ilość jedynek
i dlatego bit parzystości Pa = 0.
Do sterowania przebiegiem transmisji stosuje się często protokół transmisji XON – XOFF.
Wykorzystuje on dwa znaki (XON =11hex i XOFF = 13hex) sterujące z zestawu ASCII
przekazywane linią danych TxD – RxD. Odbiornik danych sygnalizuje za pomocą znaku
XON gotowość przyjęcia dalszych znaków natomiast pojawienie się znaku XOFF wstrzymuje
transmisją danych.
Parametry elektryczne sygnałów
Napięcia na liniach danych:
od -15V do -3V : 1 logiczna
od 3V do 15 V: 0 logiczne
Napięcia na liniach sterujących:
od -15V do -3V : 0 logiczne
od 3V do 15 V: 1 logiczna
Czas przejścia przez obszar przejściowy < 3% czasu trwania bitu. Szybkość zmian sygnałów
w liniach > 30 V/
µ
s.
Przygotował Grzegorz Śmigielski
5
Tryby pracy łącza szeregowego:
•
Simpleksowy
Łącze skonfigurowane jest na stałe na jeden z możliwych kierunków transmisji: DTE> DCE
lub DCE > DTE
•
Półdupleksowy
Zarówno DCE jak i DTE mogą być stroną nadającą oraz odbierającą, jednak do dyspozycji
jest tylko jeden logiczny kanał danych, który można naprzemiennie wykorzystywać w
obydwu kierunkach. Wyjścia TxD każdego z urządzeń połączone są z wejściami RxD
partnera. Wybór kierunku transmisji dokonywany jest za pomocą sygnałów RTS-CTS, a
prawo tego wyboru przysługuje w jednakowym stopniu obydwu stronom.
•
Dupleksowy
Dane mogą być przekazywane pomiędzy DTE i DCE jednocześnie w obydwu kierunkach.
Nie jest wymagane uzyskiwanie przez żadną ze stron zezwolenia na nadawanie. Kanał
logiczny połączenia otwarty jest stale w obie strony, a sygnały RTS/CTS nie mają znaczenia;
są one albo nie podłączone albo stale aktywne. Stale aktywna jest też linia DSR, chyba że
sygnalizuje ona nawiązywanie połączenia z innym modemem. Sygnał DCD aktywowany jest
w naturalny sposób jako odpowiedź na wykrycie fali nośnej, a linią DTR można sterować
włączaniem i wyłączaniem modemu.
USB
Interfejs USB (ang. Universal Serial Bus), jako USB 1.0 pojawił się w styczniu 1996 roku,
było to wynikiem współpracy takich firm jak: Intel, Compaq, Lucent, Hewlett-Packard, itd.
Jednak posiadał wiele wad, które w większości zostały usunięte w wersji USB 1.1, która
pojawiła się we wrześniu 1998 roku. Przełomowym rozwiązaniem było wprowadzone w 2000
roku interfejsu USB 2.0. W obecnych komputerach możemy spotkać 2-6 portów USB 1.1 i 2
porty USB2.0
. Rozwiązanie to umożliwienia szybkiego przyłączania urządzeń
peryferyjnych bez konieczności restartowania komputera. Po zainstalowaniu interfejsu, co jest
możliwe już od Windows OSR2, istnieje możliwość dołączenia do magistrali 127 urządzeń,
stosując drzewiasty sposób połączenia. Urządzenia pośredniczące muszą być wyposażone w
koncentrator USB, posiadające kilka wyjść umożliwiających przyłączenie kolejnego
urządzenia USB. Asortyment urządzeń jest bardzo bogaty, obok typowych urządzeń
peryferyjnych można do USB podłączyć aparat cyfrowy, kamerę internetową, kartę TV,
1
Opracował dr inż. Wiesław Urbaniak
2
strona Universal Serial Bus - www.usb.org
Przygotował Grzegorz Śmigielski
6
adapter IrDa, itp. Można też w bardzo szybki sposób zbudować sieć komputerową w oparciu
o to złącze. Każda magistrala szeregowa USB musi być wyposażona w kontroler USB (ang.
Host Controller). Kontroler taki może stanowić osobną kartę rozszerzeń, jednak większość
współczesnych płyt głównych posiada taki kontroler wbudowany w układ sterujący tzw.
chipset. Działanie magistrali oparte jest o oprogramowanie składające się z:
−
sterownika USB - którego zadaniem jest zorganizowanie transmisji w oparciu o
wymagania sprzętowe urządzeń podłączonych do magistrali;
−
sterowników urządzeń USB – odpowiadają one za komunikacje z urządzeniami USB;
−
sterownika głównego kontrolera USB – decyduje on o kolejności obsługiwanych
urządzeń i nadzoruje transmisje między nimi.
Transmisja realizowana może być w następujących trybach:
−
przerwaniowy (ang. Interrupt Transfee) – obsługuje urządzenia sterowane
przerwaniami;
−
blokowy (ang. Bulk Transfer) – obsługuje transmisje informacji w postaci bloków;
−
izosynchroniczny (ang. Isosynchronous Transfer) – obsługuje transmisje w czasie
rzeczywistym.
Przesyłanie danych odbywa się poprzez parę przewodów D
+
(zielony) i D
-
(biały). W stanie
spoczynku w przewodach tych panuje napięcie odpowiednio 3 i 0V, tabela poniżej.
Pin
Kolor
Funkcja
Napięcie
1
Czerwony
V
Bus
+ 5 V
2
Biały
D
-
0 V
3
Zielony
D
+
+ 3 V
4
Czarny
masa
0 V
Parametry łącza USB
Dołączanie i odłączanie urządzeń USB jest możliwe podczas pracy komputera dzięki
automatycznemu rozpoznawaniu i adresowaniu. Sterowniki urządzeń uruchamiane są
automatycznie z chwilą ich włączenia bez udziału użytkownika.
Przygotował Grzegorz Śmigielski
7
Zadania do wykonania:
I. Program komunikujący się z multimetrem cyfrowym poprzez port RS-232.
Multimetr METEX jak sama nazwa wskazuje przystosowany jest do standardowych
pomiarów napięć, prądów, rezystancji, częstotliwości, pojemności itd. Pomiary wykonywane
są z dużą dokładnością. Multimetr umożliwia przesyłanie wyników pomiarów do komputera
przez port szeregowy RS232C.
Parametry komunikacji:
•
prędkość danych: 1200 bit/s
•
kontrola parzystości: brak
•
ilość bitów danych: 7
•
ilość bitów stopu: 2
•
brak kontroli przepływu
Dane przesyłane z miernika, a także rozkazy wydawane przez komputer są w postaci kodów
ASCII. Instrukcją rozkazującą miernikowi rozpocząć nadawanie jest D. Po otrzymaniu tej
instrukcji miernik wysyła do komputera pojedynczy wynik w postaci 14 bajtowej paczki.
W paczce tej dane przesyłane są w takim formacie w jakim wyświetlane są na
ciekłokrystalicznym wyświetlaczu miernika, a więc (przykładowe dane):
bajt 1 2 3 4 5 6 7 8 9 10 11 12 13 14
znak D C - 1 . 0 0 1 1 V CR
Co oznacza napięcie stałe DC, wartość 1,0011 V, CR jest znakiem końca transmisji (tzw.
powrotem karetki).
Celem ćwiczenia jest nauka pisania programu komunikującego się z zewnętrznym
urządzeniem poprzez port RS 232C.
Do obsługi interfejsów (nie tylko RS232C) w LabView służą komponenty VISA dostępne
z palety Instrument I/O. Dla interfejsu RS232C są one zgrupowane dodatkowo w palecie
Serial.
Przygotował Grzegorz Śmigielski
8
Do zbudowania programu umożliwiającego prostą obsługę portu wykorzystuję się ikonki:
Configure Port – służy do inicjalizacji komunikacji z portem szeregowym. Konieczne jest
podanie nazwy urządzeń Visa Resource Name i określenie parametrów transmisji.
Write – wysłanie danych w postaci łańcucha znaków na port szeregowy
Read – odczyt danych z portu szeregowego, liczba odczytanych znaków jest ustalana: byte
count
Close – zamknięcie portu szeregowego
Przygotował Grzegorz Śmigielski
9
Zadanie a
Program obsługujący miernik przedstawiono na rysunku:
1. W pierwszym kroku ustawiane są parametry transmisji.
2. Transmisja odbywa się przy wyzerowanym sygnale RTS (żądania nadawania),
wyzerowanie odbywa się przy pomocy procedury serial_line_ctrl.vi dostępnej
w bibliotece _sersup.llb (po kliknięciu prawym przyciskiem myszy na diagramie
wybieramy Select A VI…i znajdujemy procedurę zgodnie z podaną ścieżką dostępu
C:\Program Files\National Instruments\LabView\vi.lib\Inst\sersup.llb). Po kliknięciu
prawego przycisku myszy na wejściu function tej procedury udostępnia się ikonę stałej
umożliwiającej wybór żądanej opcji. W odróżnieniu od komponentów VISA nie ma
możliwości wybrania nazwy interfejsu, konieczne jest określenie numeru portu COM
odpowiednio COM1 = 0, COM2 = 1 itd.
3. Następnie na port wysyłany jest rozkaz odczytu „D”
4. Kolejna instrukcja to odczyt z portu danych, należy pamiętać o ustawieniu wartości 14
bajtów oraz utworzeniu na wyjściu read buffer wskaźnika, który będzie wyświetlał
informację odczytaną z portu.
5. Wyjścia błędów z poszczególnych ikon error out należy połączyć do wejść błędów
error in zgodnie ze schematem na rysunku.
6. Ostatnia ikona reprezentuje zamknięcie portu i na jej wyjściu należy umieścić
wskaźnik błędu.
Przygotował Grzegorz Śmigielski
10
7. W pętli umieścić Time Delay Functions->Timing->Time Delay i ustawić wartość
opóźnienia na 2 sekundy.
Przetestować działanie programu wykonując pomiary rezystancji, napięcia i pojemności.
Sprawdzić działanie programu dla różnych wartości opóźnienia Time Delay. Dla jakiej
wartości opóźnienia transmisja nie zachodzi poprawnie?
Zadanie b
Zrealizować program, który będzie umożliwiał prostą komunikację między dwoma
komputerami przy pomocy łącza szeregowego – wysyłanie i odczyt znaków. Do
odczytywania ilości danych w buforze odbiorczym wykorzystać funkcję Bytes At Serial
Port.
Najpierw sprawdzić poprawność komunikacji przy pomocy programu Hyper Terminal
(Programy->Akcesoria->Komunikacja). O ile jest to wymagane wpisać dowolne numery
kierunkowe (np. 0). Pozostałe ustawienia programu jak poniżej.
Poeksperymentować z różnymi ustawieniami prędkości transmisji, liczby bitów stopu itd.
takimi samymi na obydwu komputerach. Sprawdzić poprawność komunikacji między
komputerami dla różniących się ustawień.
Przygotował Grzegorz Śmigielski
11
II. Program komunikujący się z zewnętrznym urządzeniem poprzez port USB.
Do komunikacji poprzez port USB przewidziany jest specjalny moduł NI USB 6008,
zawierający kontroler USB, 2 wyjścia analogowe, 8 wejść analogowych, 12 wejść/wyjść
cyfrowych.
Parametr
Maksymalna szybkość próbkowania wejścia
analogowego 1 wejścia (pojedynczy kanał)
10 tysięcy próbek na sekundę
Maksymalna szybkość próbkowania wejścia
analogowego 1 wejścia (wszystkie kanały)
10 tysięcy próbek na sekundę
Przygotował Grzegorz Śmigielski
12
Budowa wejścia analogowego
MUX – multiplekser sygnałów wejściowych
PGA – wzmacniacz o programowalnym wzmocnieniu
Sposób podłączenia źródła sygnału analogowego do wejścia
a) wejście różnicowe (differential) : pary AI0-AI4, AI1-AI5, AI3-AI7
dla źródeł typu generator
b) wejście masowe (RSE) dla źródeł o wspólnej masie
Budowa wyjścia analogowego
Przygotował Grzegorz Śmigielski
13
Sposób podłączenia obciążenia do wyjścia analogowego
Urządzenie USB 6008 należy zainstalować w systemie. Po zainstalowaniu będzie ono
widziane w programie konfiguracyjnym Measurement And Automation Explorer. Po
każdorazowym podłączeniu urządzenia pojawia się okno startowe z możliwością wyboru
opcji testowania – Run Test Panels lub konfiguracji Configure This Device.
Zadanie a
Najprostszy program wykorzystujący urządzenie USB został przedstawiony na rysunku. Na
wyjściu AO1 ustawiana jest wartość napięcia zgodnie z wartością ustaloną przy pomocy
pokrętła typu Knob. Sprawdzić działanie programu mierząc wartość wyjściową napięcia przy
pomocy multimetru.
Przygotował Grzegorz Śmigielski
14
Zadanie b
Napisać program, który będzie generował przebiegi na płytce testowej S.C. – 2075 –
wykorzystać wyjście analogowe AO0. Wykorzystać funkcje ekspresowe LabView. Wyjście
analogowe z płytki S.C. – 2075 podłączyć do wejścia analogowego USB 6008 (AI0 i GND).
– typ wejścia RSE (ustawienie w DAQ Assistant – opcja Terminal Configuration).
Zarejestrować generowany przebieg przy pomocy USB 6008 – napisać odpowiedni program.
Uzyskane dane zapisać do pliku – zaimportować je do arkusza kalkulacyjnego i utworzyć
wykres z uzyskanych danych.
W sprawozdaniu umieścić kody programów oraz wykresy uzyskanych przebiegów.
Przygotował Grzegorz Śmigielski
15