Promotic
WikipediaLinkedInYoutubeTwitterFacebook

PmNET0 - Driver do komunikacji poprzez protokół PROMOTIC NET0

Przed zastosowaniem tego drivera w aplikacji PROMOTIC należy zaznajomić się z rozdziałem: Komunikacja przy pomocy driverów PROMOTIC.
 
Podstawowe właściwości drivera:
- Komunikacja przebiega po łączu szeregowym komputera (COM1, COM2 ...).
- Driver jest wbudowany do systemu PROMOTIC przy pomocy obiektu PmComm.

Driver umożliwia wykorzystanie obiektu PmCommMsg. Obiekt PmCommData nie można zastosować.

Dla łatwego dodania tego drivera do aplikacji jest dogodne zastosować: Konfiguracje wstępne w grupie "NET0 protokół komunikacyjny"

- Jest do dyspozycji pod pozycją handlową PmNET0, która jest bezpłatna.
 
Protokół NET0 może służyć jako tanie połączenie dwu aplikacji PROMOTIC po łączu szeregowym komputera. Niektórzy producenci sprzętu zaimplementowali ten protokół do swych urządzeń i w tym przypadku można z tymi urządzeniami komunikować się bardzo łatwo i tanio (patrz na przykład konwerter sprzętowy LonWorks-NET0 firmy SAMO).
 
Protokół NET0 jest protokołem sieciowym typu 1Master x nSlave, maks. ilość stacji typu Slave wynosi 253.

Protokół NET0 może służyć na przykład do następujących celów:

- komunikacja po łączu szeregowym komputera pomiędzy komputerami PC, na których jest uruchomiona aplikacja PROMOTIC. Sposób ten nie jest często stosowany, ponieważ jest prostsze i uniwerslaniejsze połączenie komputerów w sieci LAN.
- komunikacja pomiędzy stacją PC, na której jest uruchomiona aplikacja PROMOTIC z innym urządzeniem sprzętowym, które jest wyposażone w protokół NET0. Ten sposób jest chyba najczęstszym sposobem i właśnie dla tych, którzy chcą niniejszy protokół zaimplementować, jest przeznaczony Opis protokołu NET0.
 

Zalecone wartości parametrów:

Opis i zalecane wartości dla pozycji Parametry protokołu:
Numer niniejszego komputera (ncp)Numer niniejszego komputera
0 - oznacza, że nie chodzi o komunikację sieciową, tylko o komunikację typu punkt-punkt.
1 .. 253 - identyfikuje niniejszy komputer w sieci komunikacyjnej.
Typ komunikatówMoże być następujących typów:
Master Only - Driver będzie typu Master, to znaczy, że aplikacja PROMOTIC będzie nadawać wymogi i urządzenia na drugiej stronie będą wyłącznie odpowiadać.
Slave Only - Driver będzie typu Slave, to znaczy, że jedno z urządzeń po drugiej stronie będzie nadawać wymogi, i jeżeli wymóg jest przeznaczony do niniejszego komputera, wtedy tylko odpowie na wymóg.
Maks.długość odebranych danych w bajtachDługość najdłuższego możliwego odbieranego komunikatu.
Timeout potwierdzenia odbioruCzas (w milisekundach), przez który driver będzie oczekiwać na potwierdzenie komunikatu (w przypadku komunikatów, na które nie powinien odpowiadać lecz tylko potwierdzić ich odbiór)
Limit czasu odbioru odpowiedziOkres czasu (w milisekundach) w którym driver będzie oczekiwać na odpowiedć po odesłaniu wiadomości. Jeżeli do tego czasu nie zostanie odebrana żadna odpowiedć, wtedy transmisja wiadomości zostanie zakończona (zostanie wywołane zdarzenie onEndOfTransfer z błędem 24 lub 66).
Opis konfiguratora PmCommMsg > Parametry > Parametry wiadomości:
Numer przeciwległego komputera (ncp)Numer przeciwległego komputera
0 - oznacza, że nie chodzi o komunikację sieciową lecz tylko o komunikację punkt-punkt.
1 .. 253 - identyfikuje przeciwległy komputer w sieci komunikacyjnej.
254 - (broadcast) oznacza, że wiadomość jest przeznaczona dla wszystkich komputerów w sieci komunikacyjnej.
Numer połączenia komunikatu (nco)Identyfikator komunikatu. Wartość w zakresie od 0 do 255.
Potwierdzać komunikatTylko dla komunikatów typu Master. Dla komunikatów, które nadają dane lecz nie wymagają danych w odpowiedzi. Określa, czy przeciwległa strona ma potwierdzić odbiór danych.

Opis protokołu NET0

 
Wygląd wiadomości protokołu NET0:
STX: (=02H) kod początku wiadomości
DST: numer stacji docelowej
SRC: numer stacji źródłowej
CMD: właściwości wiadomości pod postacią maski bitowej wartości:
08H: jest zastosowana komunikacja sieciowa
20H: odpowiedź na wymóg na przesłanie danych
40H: wymóg przesłania danych
80H: wiadomość wymagająca potwierdzenie (ACK)
NCO: numer połączenia (do rozróżnienia poszczególnych rodzai wiadomości)
data: własne wartości przenoszone
ETX: (=03H) kod końca wiadomości
SUM: suma kontrolna, tzn. matematyczny xor bajtów od DST (włącznie) po ostatni bajt "data" (włącznie). Xor wykonuje się nad wartościami, które jeszcze nie są zakodowane przy pomocy znaku DLE (patrz Notatka 1)
 
Notatka 1:

Wartości DST, SRC, CMD, NCO, data oraz SUM mogą mieć jakąkolwiek wartość z wyjątkiem następujących wartości:

STX = 02H: kod początku wiadomości
ETX = 03H: kod końca wiadomości
ACK = 06H: potwierdzenie pozytywne
DLE = 10H: prefiks zmianowy
NAK = 15H: potwierdzenie negatywne

Jeżeli w wysyłanych danych znajduje się dowolny z w/w znaków, wtedy znak ten zostanie do protokołu zakodowany do dwu znaków:

(DLE) oraz (X+80H)

To znaczy, że protokół ma zmienną ogólną długość wiadomości w zależności od wartości transmitowanych w wiadomości!

Przykład:

W danych chcemy przenieść 1 bajt o wartości 02H. Zamiast niego zostaną w danych przesłane 2 bajty: najpierw DLE a następnie 82H. Dzięki zakodowaniu przy pomocy znaku DLE osiągniemy, że wartości STX, ETX, ACK, DLE oraz NAK występują wyłącznie w tym miejscu wiadomości, gdzie jest ich właściwa funkcja.

 
Notatka 2:

Protokół jest ogólnie sieciowy, tzn. że we wiadomości znajduje się numer stacji, która przez którą wiadomość ma zostać odebrana (DST=destination) i stacji, która wiadomość wysłała (SRC=source). Wartości DST oraz SRC mogą mieć wartości w przedziale od 1 do 253. Jeżeli DST oraz SRC jest równe 0, wtedy chodzi o protokół niesieciowy, który odróżnia się od sieciowego tylko tym, że bajty DST oraz SRC w protokole w ogóle nie występują. Jeżeli DST ma wartość 254, wtedy chodzi o wiadomość typu "broadcast", tzn. że jest wysyłana do wszystkich stacji w sieci.

 
Notatka 3:

Format obszaru "data" jest zgodny z formatem typów danych na komputerach PC. To znaczy, że na przykład Integer jest przenoszony w 2 bajtach (najpierw LOW a następnie HIGH). Boolean jest przenoszony w 1 bajcie (wartość 0 i 1). Wartości w obszarze "data" występują w takiej kolejności, w jakiej zostały zdefiniowane zmienne wiadomości w systemie PROMOTIC.

 
Notatka 4:

Po odbiorze danych stacja odbierająca jest zobowiązana wykonać następujące:

- jeżeli wiadomość została błędnie odebrana (np. błędna suma kontrolna lub niewłaściwa zawartość danych) i jest wymagane potwierdzenie (w CMD jest ustawiony bit 80H), wtedy wysłać jeden znak NAK (=15H) jako potwierdzenie negatywne.
- jeżeli wiadomość została poprawnie odebrana i:
- a) jest wiadomością typu "odpowiedź na przesłanie danych" (w CMD ustawiony bit 20H), wtedy nie odpowiada
- b) nie jest wiadomością typu "wymóg na przesłanie danych" (w CMD ustawiony bit 40H) i jest wymagane potwierdzenie (w CMD ustawiony bit 80H), wtedy wyśle jeden znak ACK (=06H).
- c) jest wiadomością typu "wymóg na przesłanie danych" (w CMD ustawiony bit 40H), wtedy odeśle odpowiedź w takim samym (opisanym wyżej) formacie.

W pozostałych sytuacjach nie odpowiada się na odbiór danych.

 
Przykład:

Są wysłane dwie wartości: Integer o wartości 258 (=0102H) oraz bajt o wartości 3 (=03H). Wiadomość ma być potwierdzana, numer połączenia NCO = 0 i chodzi o niesieciowy protokół (tzn. będą brakować znaki DST oraz SRC).

Stacja odbierająca przyjmie bajty w następującej kolejności:

02H: znak STX = początek wiadomości
80H: znak CMD = wymóg potwierdzenia wiadomości
00H: numer połączenia NCO
10H: znak DLE = dolny bajt 1. wartości jest taki sam jak STX
82H: dolny bajt 1. wartości + 80H
01H: górny bajt 1. wartości
10H: znak DLE = 2. wartość jest taka sama jak ETX
83H: 2. wartość + 80H
03H: znak ETX = koniec wiadomości
80H: SUM = suma kontrolna (80H = 80H xor 00H xor 02H xor 01H xor 03H)
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice