background image

          

 

 KATEDRA AUTOMATYKI NAPĘDU ELEKTRYCZNEGO

 

 

Laboratorium Przemysłowych Sieci Informatycznych

Przesył informacji przy wykorzystaniu 

interfejsu RS232

Instrukcja do ćwiczenia laboratoryjnego nr 6

Gdańsk 2009

Opracował : Janusz Szewczyk
Wersja 1.0  (10.2009)

1

background image

Spis treści

1. Cel ćwiczenia 
2. Ogólna charakterystyka interfejsu RS232 
3. Moduł komunikacyjny ADAM 4570 

3.1.

Ogólna charakterystyka modułu

3.2.

Konfiguracja modułu 

4. Połączenie komputera z  przekształtnikiem MMB10 za pośrednictwem wirtualnego portu 

COM komputera i modułu ADAM 4570 

4.1.

Obsługa portu RS232 przy wykorzystaniu WindowsAPI 

4.2.

Kod źródłowy programu w środowisku Borland Builder

5. Przebieg ćwiczenia

2

background image

1. Cel ćwiczenia

Celem ćwiczenia jest zapoznanie się z szeregowym interfejsem RS232. Obsługa interfejsu 

od strony komputera PC w taki sposób aby możliwa była transmisja danych pomiędzy komputerem 
a   przekształtnikiem   wykorzystującym   do   komunikacji   interfejs   szeregowy.   Do   połączenia 
komputera z przekształtnikiem wykorzystywany jest moduł komunikacyjny firmy Advantech model 
ADAM-4570.

W ramach ćwiczenia należy

skonfigurować konwerter Ethernet na RS232/RS485 firmy Advantech model ADAM-4570

napisać prosty program obsługujący port COM komputera, wysyłający określone dane do 
przekształtnika

zarejestrować  na   oscyloskopie  i  zdekodować  przesyłane  dane   (pomiędzy  komputerem  a 
przekształtnikiem)

2. Ogólna charakterystyka interfejsu RS232

RS 232 – ( Recommended Standard ) jest najpopularniejszym  najpowszechniej stosowany 

standardem do szeregowej wymiany danych cyfrowych pomiędzy urządzeniami. Dane przesyłane 
są pomiędzy urządzeniem które jest odbiorcą danych DTE(ang. Data Terminal Equipment), zwykle 
komputer,   oraz   urządzeniem   komunikacyjnym   DCE(Data   Communications   Equipment)   np. 
modem.   Standard   RS232   określa   wszystkie   elementy   potrzebne   do   zestawienia   komunikacji 
pomiędzy   urządzeniami   tzn.   nazwy   styków,   złącz,   kabli   oraz   format   pojedynczych   bajtów   w 
przesyłanych ramkach.

W komputerach typu PC interfejs ten występuje jako jeden port lub szereg portów COM. 

Popularność interfejsu sprawiła iż istnieje szereg konwerterów różnych protokołów na RS232 np. 
RS232 na Ethernet, Wi-Fi, Bluetooth, Can, ProfiBus, RS485, USB, ZigBee itd.

Dane przesyłane są w postaci ramki zwanej SDU ( Seria Data Unit ). Jest to najmniejsza 

porcja danych, która może zostać wysłana jednorazowo przez łącze szeregowe. Na ramkę składają 
się: bity danych, bit startu ( znacznik początku ramki ), bit parzystości oraz bity stopu ( znacznik 
końca ramki ). 

Bit startu służy do sygnalizacji początku ramki. Dane przesyłane są asynchronicznie (tzn. 

bez   zegara   taktujące   poszczególne   bity)   zatem   jest   on   obowiązkowy,   bez   niego   urządzenie 
odbierające nie rozpoznałoby początku ramki. Bit startu zawsze przyjmuje wartość zero, natomiast 
linia łącza danych w stanie spoczynku utrzymywana jest w stanie logicznym 1. Dzięki temu bit 
startu jest wyraźnym wskaźnikiem początku transmisji. Bit startu jest jałowy z punktu widzenia 
przesyłanej informacji, służy jedynie celom synchronizacyjnym. 

Po bicie startu przesyłane  są bity danych. Ramka może zawierać od 5 do 8 bitów danych. 

Bity te są przesyłane w kolejności od najmniej znaczącego, do najbardziej znaczącego.

Po bitach danych może wystąpić bit parzystości. Bit parzystości jest wykorzystywany do 

zabezpieczenia   danych   przed   przekłamaniem   podczas   przekazu.   Bit   parzystości   ma   wartość 
logiczną równą sumie modulo 2 wszystkich bitów danych. Może oznaczać parzystą lub nieparzystą 
liczbę   ustawionych   bitów   w   polu   danych.   Kontrola   parzystości   polega   na   sprawdzeniu   ilości 
jedynek na polu danych i ustawieniu bitu kontrolnego na "1", w przypadku nieparzystej ilości 
jedynek,   lub   na   "0"   w   przypadku   parzystej   ilości   jedynek.   Podczas   kontroli   nieparzystości   bit 
zabezpieczający ustawia się na jeden, w przypadku parzystej ilości jedynek na polu danych, lub na 
zero,   jeżeli   ilość   jedynek   jest   nieparzysta.   Bit   kontroli   parzystości   pozwala   wykryć   fakt 
przekłamania znaku na polu danych, pod warunkiem, że ilość przekłamań jest nieparzysta. Bit ten 
może być ustawiony na stałe lub też może być na stałe wyzerowany, może być także pominięty. 

3

background image

Ramka zakończona jest bitami stopu. Liczba bitów stopu może wynosić 1, 1.5, lub 2. Bit 

stopu zamyka ramkę po czym łącze wraca do spoczynku lub realizuje kolejną transmisje.

1 bit startu 
(obowiązkowy)

5-8bitów danych
(obowiązkowe)

1 bit parzystości 
(opcjonalny)

1-2 bity stopu 
(obowiązkowe)

Rys. 1. Format ramki RS232.

Rys. 2. Przykład ramki SDU. 7 bitów danych, 1 bit parzystości, 2 bity stopu

Czas  trwania bitu w jednostce informacyjnej nazywa  się odstępem jednostkowym i jest 

oznaczany przez Tb. Jego odwrotność ( f = 1/Tb ) określa szybkość transmisji w bodach ( 1 bd = 1 
bit/s ). Typowe wartości szybkości transmisji przy asynchronicznej transmisji znakowej wynoszą: 
1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600, 115200 bd, co przy założeniu 10-bitowej 
długości jednostki informacyjnej i przesyłaniu znaków bezpośrednio jeden za drugim odpowiada 
120, 240, 480, 960 itd. znakom na sekundę. Przy asynchronicznej transmisji znakowej przyjmuje 
się,   że   zarówno   odbiornik   jak   i   nadajnik   pracują   z   tą   samą   częstotliwością,   jakkolwiek   takty 
nadawania   i   odbioru   nie   są   zsynchronizowane.   Ze   względu   na   małą   długość   jednostki 
informacyjnej, niewielka różnica częstotliwości generatorów taktu w nadajniku i odbiorniku nie 
powoduje błędnego odbioru znaków. Wspomniany bit kontrolny jest najczęściej bitem parzystości, 
którego stan określa się według jednej z dwóch zasad: kontrola parzystości ( even parity ), kontrola 
nieparzystości ( odd parity ). 

Od strony komputera PC najbardziej rozpowszechnionym portem z interfejsem RS232 jest 

port   COM   ze   złączem   DB9.  W  starszych   rozwiązaniach   używane   były  również   złącza   DB25. 
Wykorzystywane są również inne rozwiązania złącz jak RJ45 lub RJ11. Na złącze DB9 składa się 9 
pinów opisanych w tabeli poniżej.

Nr pinu 
DB9

Oznaczenie Opis

1

DCD

Data Carrier Detected. Sygnał wykrycia nośnej.

2

RxD

Receive Data. Linia do odbioru danych.

3

TxD

Transmit Data. Linia do nadawania danych.

4

DTR

Data Terminal Ready. Sygnał gotowości do odbioru danych.

5

GND

Signal Ground. Masa sygnałów.

6

DSR

Data Set Ready. Gotowość do transmisji danych.

7

RTS

Request to Send Data. Żądanie wysłania danych.

8

CTS

Clear to Send Data. Zezwolenie na wysłanie danych.

9

RING

Ring indicator. Wskaźnik dzwonka.

4

background image

Komunikacja   pomiędzy   urządzeniem   nadawczym   –   DTE   (   Data   Terminal   Equipment   –   np. 
komputer ) i odbiorczym – DCE ( Data Communication Equipment – np. modem ) może odbywać 
w trojaki sposób:

tryb  simpleks  –   łącze   skonfigurowane   jest   na   stałe   na   jeden   z   możliwych   kierunków 
transmisji:   DTE  

  DCE   lub   DCE  

  DTE.   W   tym   przypadku   jedno   z   urządzeń   nie 

uwzględnia sygnałów od drugiego.

tryb  półdupleks  – zarówno DTE jak i DCE mogą być stroną nadającą oraz odbierającą, 
jednak   nie   mogą   transmitować   danych   w   tym   samym   czasie.   Urządzenia   do   dyspozycji 
posiadają   jeden   kanał,   który   wykorzystywany   jest   naprzemiennie   w   obydwu   kierunkach 
( pytanie – odpowiedź ).

tryb dupleks – dane mogą być przekazywane jednocześnie w obu kierunkach pomiędzy DTE 
oraz   DCE.   Żadna   ze   stron   nie   musi   uzyskać   zezwolenia   na   nadawanie,   kanał   logiczny 
połączenia jest otwarty na stałe w obie strony.

Przykład transmisji półdupleks z wykorzystaniem wszystkich linii RS232 pomiędzy komputerem z 
podłączonym przez port COM modemem, komunikujący się z innym urządzeniem np. odległym 
komputerem:
Po nawiązaniu połączenia komputer przechodzi do trybu przesyłania danych. Zakłada się istnienie 
jednej tylko linii transmisyjnej pomiędzy komputerami, po której oba komputery mogą przesyłać 
dane, oczywiście niejednocześnie. Sterowanie transmisją na dwukierunkowym, półdupleksowym 
łączu jest następujące: komputer, który chce wysłać dane zawiadamia o tym współpracujący z nią 
modem uaktywniając sygnał RTS ( Request To Send). Modem po stwierdzeniu aktywnego stanu na 
linii  RTS  musi  sprawdzić,   czy łącze   nie  jest   zajęte  przez  odległy komputer.  O  zajętości   łącza 
świadczy sygnał DCD ( Data Carrier Detected), uaktywniany przez modem w sytuacji, gdy odległy 
komputer   przesyła   dane   do   modemu.   Załączony   sygnał   DCD   oznacza,   że   odległy   komputer 
transmituje   dane   i   że   on   właśnie   posiada   kontrolę   nad   łączem.   W   takim   przypadku   lokalny 
komputer   nie   może   transmitować   danych.     Jeżeli   sygnał   DCD   wystawiany   przez   modem   jest 
wyłączony ( a zatem łącze jest wolne ), to modem   zezwala na wysłanie danych uaktywniając 
sygnał CTS ( Clear To Send). Od tej chwili lokalny komputer może nadawać dane przez wyjście 
TxD.

Tryb   półdupleks   może   także   odbywać   się   bez   wykorzystania   dodatkowych   linii 

występujących w interfejsie RS232 (DCD, DSR, RTS, CTS oraz RING). Ma to miejsce np. w 
przypadku komunikacji między urządzeniami na zasadzie MASTER-SLAVE. Współpraca urządzeń 
na tej  zasadzie polega na tym  iż  urządzenie MASTER  wysyła  ramkę  zapytania do urządzenia 
SLAVE, po czym urządzenie SLAVE odpowiada urządzeniu MASTER na zapytanie. Urządzenie 
SLAVE nie może bez zapytania wysyłać danych do urządzenia MASTER. Z tego względu na 
liniach danych oba urządzenia nie wysyłają danych jednocześnie i możliwe jest istnienie tylko 
jednego   kanału   transmisji.   W   ćwiczeniu   wykorzystano   właśnie   ten   typ   współpracy   pomiędzy 
urządzeniami. Urządzeniem MASTER jest komputer PC, a urządzeniem SLAVE jest przekształtnik 
odpowiadający na zapytania wysyłane przez komputer. Linie, dodatkowe, występujące w interfejsie 
RS232  nie są wykorzystane.

3. Moduł komunikacyjny ADAM 4570

3.1.

Ogólna charakterystyka modułu 

Moduł  ADAM   4570   jest   urządzeniem   które   za   pośrednictwem   sieci   Ethernet   przekazuje   dane 
wysyłane na wirtualny port COM komputera PC do odległego urządzenia obsługującego jeden z 
interfejsów   szeregowych   RS232,   RS422,   RS485.   Dla   oprogramowania   komunikującego   się   z 
odległym   urządzeniem   moduł   jest   niewidoczny.   Oprogramowanie   wysyła   dane   do   odległego 

5

background image

urządzenia   w   taki   sam   sposób   jakby   było   podłączone   bezpośrednio   do   komputera   PC.   W 
rzeczywistości   dane   wysyłane   są   przez   kartę   sieciową   komputera   do   modułu   ADAM   który 
konwertuje odebrane dane na jeden z wybranych interfejsów np. RS232.

Moduł komunikacyjny ADAM 4570 charakteryzuje się następującymi parametrami : 

2 porty konwersji Ethernet 

 RS232/RS422/RS485 ;

protokół transmisji TCP, UDP, IP ;

port sieciowy : 10 Base-T IEEE 802.3 ; 100 Base-TX IEEE 802.3u ; RJ-45 ;

port szeregowy : RS-232/485/422 ;

szybkość transmisji : RS-232 : 300 bps 

 115.2 Kbps ; RS-485 : 300 bps 

 230.4 Kbps ; 

format transmisji : kontrola parzystości , kontrola nieparzystości , brak kontroli

liczba bitów danych : 5, 6, 7, 8 ;

liczba bitów stopu : 1, 1.5, 2 ;

kontrola modemu : pełna , RS-232 ;

kompatybilność : Ethernet version 2.0/IEEE 802.3 , IEEE 802.3u 

Rys. 3. Moduł komunikacyjny ADAM 4570

3.2.

Konfiguracja modułu 

Do   konfiguracji   modułu   należy   użyć   następującego   oprogramowania:  EDG   COMPort 

Configuration Utility oraz EDG COMPort Mapping Utility. Przebieg konfiguracji przy użyciu 
tych programów został opisany poniżej.

6

background image

Konfigurację modułu rozpoczyna się od programu EDG COMPort Configuration Utility. Po 

uruchomieniu aplikacji pojawia się ekran startowy (Rysunek 3.), na którym widać pasek postępu 
podczas wyszukiwania wszystkich urządzeń typu EDG ( Ethernet Data Gateway ). Są to urządzenia 
podłączone do sieci komputerowej przewodowej lub bezprzewodowej.

Rys. 4. Ekran startowy po uruchomieniu programu EDG COMPort Configuration Utility

Po uruchomieniu programu po lewej stronie (Rysunek 5) widoczne są nazwy wszystkich urządzeń 
EDG. Możemy teraz przystąpić do konfiguracji modułu. Klikając na nazwę urządzenia,  ADAM-
4570-H11W-12
, przechodzi się do ustawień dotyczących wybranego sprzętu.  Do dyspozycji są 
cztery zakładki Device Properties dotyczące ustawień ADAMa: System, Network, Port, Security. 
Widok zawartości zakładki System przedstawia rysunek 5.

 

W zakładce  SYSTEM   widoczna jest 

nazwa  urządzenia w polu Device Name. Nie należy zmieniać domyślnej nazwy.

7

background image

Rys. 5. Przykładowy wygląd okna programu EDG Configuration Utility - zakładka System

Rys. 6. Przykładowy wygląd okna programu EDG Configuration Utility - zakładka Network

8

background image

Zakładka  Network  służy do konfiguracji ustawień połączenia sieciowego. Nie należy zmieniać 
domyślnych ustawień, tylko upewnić się czy są one następujące:

Opcja

Wartość

MAC Address

00 D0 C9 A2 57 25

Link Speed

Auto Mode

Duplex Mode

Auto Mode

IP Address

192.168.41.12

Subnet Mask

255.255.255.0

Default Gateway

192.168.41.1

W następnej zakładce  Port należy dokonać zmian ustawienia portu szeregowego PORT1. Należy 
wpisać ustawienia portu takie same jakie zostały wybrane przy tworzeniu programu testowego. 
Domyślnie są to następujące ustawienia portu pierwszego (PORT 1):

Opcja

Wartość

Rodzaj portu 
szeregowego

RS485

Prędkość transmisji

19200

Liczba bitów stopu

2

Kontrola parzystości

Brak

Kontrola transmisji

Brak

Liczba bitów danych

8

 
Jako   rodzaj   portu   szeregowego   należy   wybrać   RS485,   ponieważ   przekształtnik   do   którego 
podłączony jest moduł ADAM obsługuje właśnie ten rodzaj portu. W tym przypadku ramka danych 
dla tego portu jest taka sama jak dla portu RS232. Różnica jest w poziomie napięć na liniach szyn 
danych.

9

background image

Rys. 7. Przykładowe okno programu EDG Configuration Utility - zakładka Port

Ostatnia   zakładka  Security  umożliwia   zdefiniowanie  numerów   IP  komputerów,   które   mogą 
łączyć się z modułem ADAM. Należy zaznaczyć opcje „Allow any IP access” która umożliwi 
łączenie się z modułem z każdego komputera w sieci, w laboratorium.

Rysunek 8. Przykładowe okno programu EDG Configuration Utility - zakładka Security.

10

background image

Po odpowiednim skonfigurowaniu modułu, należy przycisnąć przycisk Apply. Można przejść do 
sprawdzenia   komunikacji   z  Adamem   poprzez   wykorzystanie   sieci   Ethernetowej.     W   systemie 
Windows przechodzimy do trybu wiersza poleceń (Start->Uruchom->”cmd”) wpisujemy komendę 
„ping 192.168.41.12” ( jest to numer IP modułu ADAM ). W przypadku prawidłowej komunikacji 
odpowiedzią wynikową od modułu jest 0% utraconych pakietów
Po   wykonaniu   konfiguracji   modułu   możemy   przejść   do   ustawiania   portu   COM   przy   użyciu 
programu   EDG   COMPort   Mapping   Utility   (Rysunek   9).   Program   ten   pozwoli   na   stworzenie 
wirtualnego  portu COM  z którego korzystać będzie przykładowy program komunikujący się z 
przekształtnikiem.   Po   lewej   stronie   okna   głównego   dostępne   są   informacje   na   temat   obecnie 
używanych portów COM ( Used Ports ), wolnych portów ( Unused Ports ) oraz portów używanych 
przez moduły Adam. W celu stworzenia portu COM, który będzie obsługiwany przez ADAM’a np. 
COM5 , klikamy na (unused Ports) wybieramy COM5, podajemy następujące informacje:
model   ADAM’a(ADAM   4570)   który   będzie   wykorzystywał   w/w   port,  numer   IP   modułu 
(192.168.41.12) oraz wybieramy port (Port1), który w module będzie przypisany do portu COM5 
komputera.   Po   ustawieniu   klikamy    Apply.   W   programie  EDG   COMPort   Mapping   Utility   w 
zakładce modułu Adam 4570 powinien pojawić się COM5 wcześniej przez nas skonfigurowany. 
ADAM 4570 jest gotowy do pracy.

Opcja

Wartość

Model of Installed Device

ADAM 4570

IP Address of Installed Device 192.168.41.12
Port of Installed Device

Port 1

Rysunek 9.  Przykładowe okno programu EDG COMPort Mapping Utility - przyporządkowanie 

portu COM3 do portu1 Adama.

11

background image

4. Połączenie  komputera z    przekształtnikiem  MMB10  za  pośrednictwem  wirtualnego 

portu COM komputera i modułu ADAM 4570

Jednym   z   zadań   jakie   należy   wykonać   w   ramach   ćwiczenia   jest   napisanie   prostego 

programu obsługującego port COM komputera. Program powinien wysyłać ramkę RS232 złożoną z 
pięciu bajtów do przekształtnika MMB10 firmy MMB Drives. Ramka wysyłana powinna być na 
wirtualny port COM stworzony przy pomocy oprogramowania modułu ADAM. Przekształtnik po 
odebraniu ramki  odsyła ją z powrotem do komputera w celu potwierdzenia odebrania danych. Cała 
ramka przesyłana jest za pośrednictwem modułu ADAM 4570 połączonym z jednej strony do sieci 
Ethernet laboratorium a z drugiej strony do przekształtnika za pośrednictwem interfejsu RS485 
(rysunek 10). Dane zawarte w wysyłanej do przekształtnika ramce są dowolne. Program należy 
napisać w środowisku Borland Builder według opisu znajdującego się w podpunkcie 4.2.

Rys. 10. Połączenie komputera z przekształtnikiem MMB10

4.1.

Obsługa portu RS232 przy wykorzystaniu WindowsAPI 

W   systemie   Windows   zaimplementowano   funkcje,   dostępne   za   pośrednictwem   interfejsu 
programistycznego  WinAPI,   do   obsługi   portów   COM.   Funkcje   te   są   łatwe   w   implementacji   i 
pozwalają   na   pełną   kontrolę   nad   danymi   przesyłanymi   za   pośrednictwem   portu   COM.   Opis 
podstawowych   funkcji  API   potrzebnych   do   napisania   prostego   programu   wysyłającego   paczkę 
danych przez port COM przedstawiono poniżej:

„CreateFile” - funkcja otwierająca port. Parametrami funkcji są między innym: numer portu 
jaki ma zostać otwarty oraz rodzaj dostępu do portu (zapis/odczyt). Funkcja zwraca uchwyt 
który wykorzystywany jest do uzyskania dostępu do portu. Przykładowe wywołanie funkcji 
w   celu   otwarcia   portu   nr   5   w   celu   zapisu   i   odczytu   danych 
CreateFile("COM5",GENERIC_READ|
GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL); 

GetCommState   oraz   SetCommState   –   funkcja   odczytująca   i   ustawiająca   podstawowe 
parametry portu takie jak prędkość transmisji, ilość bitów danych itd.

GetCommTimeouts oraz SetCommTimeouts – funkcje ustawiające timeout portu np. czas 
oczekiwania   na   dane   od   urządzeń   połączonych   do   portu   COM.   Bez   ustawienia   czasu 
oczekiwania na dane jakie ma odebrać komputer przez port, jeśli z jakiś przyczyn dane 
zwrotne nie zostaną wysłane (np. ponieważ przekształtnik zostanie wyłączony) program 

12

Komputer PC

ADAM 4570

MMB10

Sieć H11W

Ethernet
TCP/IP

Ethernet
TCP/IP

RS485

background image

przestanie reagować.

WriteFile – funkcja wysyłająca określoną tablice danych poprzez port. 

ReadFile – funkcja odczytując dane jakie zostają wysłane na port komputera

4.2.

Programowanie

Należy uruchomić program Borland Builder a następnie utworzyć nowy projekt. W tym celu 
należy z menu File wybrać New Application.

Na formie Form1 umieścić kontrolkę przycisku. W tym celu z zakładki Standard wybrać 
Button i przeciągnąć ją na formę. Przycisk posłuży później do wysyłania ramki poprzez port 
COM.

Na formie umieścić kontrolkę Memo. W tym celu z zakładki Standard wybrać Memo i 
przeciągnąć   ją   na   formę.   Kontrolka   memo   posłuży   później   do   wyświetlenia   danych 
odebranych z przekształtnika.

Przy pomocy przycisku F12 przełączyć się do widoku kodu źródłowego

Zadeklarować następujące zmienne na samej górze pliku źródłowego
HANDLE hCom;
DCB dcb;
COMMTIMEOUTS CommTimeouts;

13

background image

W konstruktorze klasy Tform1 pomiędzy znakami {} wpisać następujący kod

// wyczyszczenie kontrolki memo
Memo1->Lines->Clear(); 

// otwarcie portu nr 5
hCom=CreateFile("COM5",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);

// sprawdzenie czy port został prawidłowo otwarty
if (hCom == INVALID_HANDLE_VALUE)
{
        Application->MessageBoxA("Nie otworzono portu","error",0);
}
else
{
// ustawienie parametrów portu
        GetCommState(hCom,&dcb);
        dcb.BaudRate = CBR_19200;
        dcb.ByteSize = 8;
        dcb.Parity = NOPARITY;
        dcb.StopBits = TWOSTOPBITS;
        SetCommState(hCom,&dcb);

// ustawienie timeout-ów portu
        GetCommTimeouts(hCom,&CommTimeouts);
        CommTimeouts.ReadIntervalTimeout = 150;
        CommTimeouts.ReadTotalTimeoutMultiplier = 1;
        CommTimeouts.ReadTotalTimeoutConstant = 150;
        CommTimeouts.WriteTotalTimeoutMultiplier = 10;
        CommTimeouts.WriteTotalTimeoutConstant = 150;
        SetCommTimeouts(hCom,&CommTimeouts);
}

14

background image

Przycisnąć przycisk F12 aby Przejść do widoku Formy

Przejść do zakładki Events w panelu Object Inspector znajdujący się po lewej stronie.

Dwukrotnie przycisnąć opcje OnDestroy. Widok automatycznie zostanie przeniesiony do 
widoku kodu źródłowego, co pozwoli na obsługę funkcji OnDestroy.

15

background image

W funkcji OnDestroy wpisać następujący kod:

CloseHandle(hCom);

funkcja OnDestroy jest wykonywana na zakończenie programu, w funkcji tej wykonywany 
jest powyższy kod który zamyka port po wyłączeniu programu.

16

background image

Ponownie przejść do widoku formy przyciskiem F12

Dwukrotnie przycisnąć postawiony wcześniej przycisk (Button). Spowoduje to 
automatyczne przeniesienie do widoku kodu źródłowego i możliwość oprogramowania 
funkcji związanej z naciśnięciem przycisku. W programie tym, po naciśnięciu przycisku ma 
zostać wysłana ramka danych przez port COM. W tym celu należy wpisać następujący kod

 

       char do_wyslania[5]; 

// deklaracja tablicy z elementami do wysłania

        char odebrane[5];

// dekalracja tablicy z elementami odebranymi

        unsigned long zapisano_bajtow,odczytano_bajtow;

//zmienne określające ile danych odebrano i 

zapisano poprzez port COM
     
        Memo1->Lines->Clear(); // wyczyszczenie kontroli memo
        if (hCom == NULL) return; // sprawdzenie czy port został wcześniej prawidłowo otwarty

        do_wyslania[0] = 1;

// jedna z pięciu danych wysyłanych poprzez port COM

        do_wyslania[1] =  85;

// jedna z pięciu danych wysyłanych poprzez port COM

        do_wyslania[2] = 0;

// jedna z pięciu danych wysyłanych poprzez port COM

        do_wyslania[3] = 255 ;

// jedna z pięciu danych wysyłanych poprzez port COM

        do_wyslania[4] = 1 ;

// jedna z pięciu danych wysyłanych poprzez port COM

        WriteFile(hCom,do_wyslania,5,&zapisano_bajtow,NULL); // wysłanie bufora
        ReadFile(hCom,odebrane,5, &odczytano_bajtow,NULL);

// odbiór bufora

        if (odczytano_bajtow!=0)

// sprawdzenie czy przyszło potwierdzeni ramki z przekształtnika

        for (int i=0; i< 5; i++)

// wyświetlenie odebranych danych w kontrolce memo

        Memo1->Lines->Add((int)odebrane[i]);
        else Memo1->Lines->Add("Brak odpowiedzi");

Uruchomić program naciskając klawisz F9 lub przyciskając zielony przycisk Run

17

background image

5. Przebieg ćwiczenia

Zapoznać się z budową stanowiska laboratoryjnego (załączyć zasilanie modułu ADAM oraz 
przekształtnika podłączonego do modułu)

Skonfigurować moduł ADAM 4570 według opisu z rozdziału 3 (skonfigurować port modułu 
oraz stworzyć wirtualny port COM)

Napisać program testujący komunikacje z przekształtnikiem według opisu z rozdziału 4. 

Zarejestrować,   za   pomocą   oscyloskopu,   pojedynczą   paczkę   danych   SDU   (1   bajt). 
Zdekodować   poszczególne   bity   i   sprawdzić   czy   zdekodowana   wartość   pokrywa   się   z 
wartością jaka jest wysyłana przez program testujący

Zarejestrować,   za   pomocą   oscyloskopu,   całą   ramkę   (5   bajtów),   sprawdzić   czy  wartości 
poszczególnych bajtów w ramce odpowiada wartością przesyłanym przez program testujący

Zmienić w programie testującym oraz w konfiguracji modułu ilość bajtów stopu

Zarejestrować   ponownie,   za   pomocą   oscyloskopu,   pojedynczą   paczkę   danych   SDU   i 
porównać ją z wcześniej zarejestrowaną

18


Document Outline