Promotic

PmNET0 - Driver do komunikacji poprzez protokół NET0

Przed zastosowaniem tego drivera w aplikacji PROMOTIC należy obejżeć "PROMOTIC wideo kurs 4 - Drivery komunikacyjne".

Podstawowe właściwości drivera:
- Komunikacja jest dla łącza szeregowego (COM1, COM2 ...).
- Driver jest wbudowany do systemu PROMOTIC przy pomocy obiektu PmaComm.
Driver wspiera zastosowanie obiektu PmaCommMsg. Obiekt PmaCommGroup nie można zastosować.
Dla łatwego dodania tego drivera do aplikacji jest dogodne zastosować: Konfiguracje wstępne w grupie "NET0"
- Jest do dyspozycji pod pozycją handlową, 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 od firmy SAMO).

Protokół NET0 jest protokołem sieciowym typu 1Master x nSlave, maksymalna ilość stacji typu Slave wynosi 253.
Protokół NET0 może służyć na przykład do następujących celów:
- do komunikacji 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.
- do komunikacji 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 obiektu PmaComm:

Opis i zalecane wartości dla pozycji Parametry protokołu:
Numer tego komputera (ncp)Numer tego komputera
0 - oznacza, że nie chodzi o komunikację sieciową, tylko o komunikację typu punkt-punkt.
1 .. 253 - Identyfikuje niniejszy komputer w sieci komunikacyjnej.
Typ wiadomościMoże być następujących typów:
Master Only - Driver będzie typu Master, to znaczy, że aplikacja PROMOTIC będzie nadawać wymogi i komputery 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 wiadomości.
Timeout potwierdzenia odbioruCzas (w milisekundach), przez który driver będzie oczekiwać na potwierdzenie wiadomości (w przypadku wiadomości, na które nie powinien odpowiadać lecz tylko potwierdzić ich odbiór)
Timeout 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 "PmaCommMsg > 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.
Numer połączenia wiadomości (nco)Identyfikator wiadomości. Wartość w zakresie od 0 do 255.
Potwierdzać wiadomośćTylko dla wiadomości typu Master. Dla wiadomości, 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 w formie maski bitowej wartości:
08H: jest zastosowana komunikacja sieciowa
20H: odpowiedź na żądanie na przesłanie danych
40H: żądanie 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 wartości 02H. Zamiast niego zostaną w danych przesłane 2 bajty: 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, to znaczy, że w wiadomości znajduje się numer komputera, który przez którą wiadomość ma zostać odebrana (DST=destination) i komputera, który 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 posiada wartość 254, wtedy chodzi o wiadomość typu "broadcast", to znaczy, że jest wysyłana do wszystkich stacji w sieci.

Notatka 3:
Format obszaru "data" jest zgodny z formatem typów danych na komputerze. To znaczy, że na przykład Integer jest przenoszony w 2 bajtach (najpierw LOW a następnie HIGH bajt). 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 "żądanie 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 "żądanie 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 = żądanie 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.