Promotic

Pm3964 - Driver do komunikacji ze sterownikami PLC SIMATIC poprzez protokół 3964, 3964R lub RK-512

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

Podstawowe właściwości drivera:
- Zastosowanie tego drivera wymaga zakup licencji Pm3964. Podczas wytwarzania aplikacji w trybie freeware PmFree lub z licencją deweloperską oraz podczas jej testowania w runtime element ten jest zawsze funkcjonalny.
- Komunikacja jest dla łącza szeregowego (COM1, COM2 ...).
- Chodzi o komunikację typu punkt-punkt, to znaczy, że jeden obiekt PmaComm potrafi komunikować się tylko z jednym urządzeniem (protokół nie umożliwia adresacji urządzeń).
- 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 "3964 oraz RK512"


3964 jest protokołem komunikacyjnym przeznaczonym do połączenia dwu urządzeń. Protokół ten jest typu Master-Slave (to znaczy, że oba urządzenia mogą zamieniać się w sterowaniu komunikacją). W systemie PROMOTIC driver ten jest zaimplementowany takim sposobem, że może istnieć kilka obiektów PmaCommMsg typu Master (patrz konfigurator "Typ wiadomości"), lecz tylko jeden obiekt typu Slave.

Notatki do komunikacji typu Slave w systemie PROMOTIC:
Wiadomość Slave jest taką wiadomośćią, która najpierw oczekuje na odbiór danych od urządzenia Master a dopiero następnie odpowie. To znaczy, że Master określa, kiedy nastąpi transmisja. Ponieważ w obiektach w systemie PROMOTIC nie można dynamicznie zmieniań ilości wysyłanych (odbieranych) danych, obiekt typu Slave służy tylko do odbioru i wysyłania danych tego samego typu. Nie można więc mieć na przykład dwie wiadomości Slave (dwa obiekty PmaCommMsg), przy czym pierwszy tylko odbiera dane a drugi dane wysyła.
W celu poprwanej odpowiedzi wiadomości Slave zazwyczaj wykorzystuje się zdarzenie onDataReceive, która zostanie wywołane bezpośrednio po odbiorze danych lecz przed wysłaniem odpowiedzi. W tym zdarzeniu można stwierdzić (z zmiennych w karcie "Dane-odbiór") w jaki sposób należy odpowiedzieć i według tego ustawić dane w karcie "Dane-wysłanie".

Protokół K3964(R) wykorzystuje całe szereg sterowników PLC jak na przykład:
- SIMATIC - Firma SIEMENS (bezpośrednio wbudowane lub można zastosować kartę komunikacyjną CP525)
- INTECONT - Firma SCHENCK


Zalecone wartości parametrów obiektu PmaComm:

Zalecane wartości dla pozycji Parametry łącza szeregowego:
Prędkość transmisji9600 Bd
Ilość bitów informacji8
ParzystośćEVEN (parzysty)
Ilość bitów stopu1
Timeout pomiędzy odbiorem 2 znaków220 ms (według dokumentacji timeout ZVZ)
Opis i zalecane wartości dla pozycji Parametry protokołu:
Wyskoi priorytetOkreśla, czy stacja będzie mieć większy priorytet niż stacja przeciwległa. Na stacji przeciwległej z kolei jest konieczne ustawienie odwrotnego priorytetu. Poprawne ustawienie tej opcji ogranicza możliwość powstania konfliktów na łączu.
Z rozszerzeniem RK512Zezwolenie/zakaz automatyczne wytwarzanie nagłówków wiadomości definowanych według rozszerzenia RK512. Nagłówki można wygenerować naciśnięciem przycisku Ustawienie danych w parametrach wiadomości komunikacyjnej. Szczegółowy opis nagłówków znajduje się w dalszej części w rozdziale "Komunikacja z zastosowaniem rozszerzenia RK512".
Wykorzystać sumę kontrolną (3964R)Określa, czy protokół zawiera sumę kontrolną. Jeżeli suma kontrolna została zezwolona, wtedy w protokole będzie znajdować się suma kontrolna XOR. Chodzi o protokół 3964R.
Format danychPLC Simatic ma typ danych Integer zapisany w odwrotnej kolejności bajtów i typ danych Short w innym formacie liczby rzeczywistej niż jest standardem na komputerze. Z tego powodu driver konwertuje te wartości.
Jeżeli jednak jest uaktywniona omawiana opcja PC, wtedy konwersja nie wykonuje się. To jest konieczne na przykład przy komunikacji z wagami SCHENCK, gdzie format danych jest taki sam jak na komputerze.
Maksymalna wielkość wiadomości [w bajtach]Określa maksymalną ilość bajtów wiadomości (odbieranej lub wysyłanej) bez znaków kontrolnych (tzn. maks. wielkość danych ustawianych w kartach Dane-wysłanie lub Dane-odbiór).
Timeout potwierdzenia po STX [ms]Określa timeout pomiędzy wysłaniem znaku STX i odbiorem znaku DLE. Chodzi o tzw. timeout QVZ i ustawienie domyślne jest 2000 lub 550 ms (zależne od dokumentacji).
Timeout potwierdzenia po ETX [ms]Określa timeout pomiędzy wysłaniem danych i odboirem znaku DLE. Standardowo powinien być taki sam jak "Timeout potwierdzenia po STX".
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). Jest to timeout pomiędzy odbiorem DLE po wysłaniu wiadomości i odbiorem STX. Standardowo powinien być taki sam jak "Timeout potwierdzenia po STX".

Komunikacja bez rozszerzenia RK512

Typ komunikacji bez rozszerzenia RK512 (tzn. czysty protokół 3964) ma dosyć znaczące ograniczenia jeżeli chodzi o ogólność transmisji. Można wysyłać i odbierać wyłącznie dane właściwe bez określenia ich adresu. Wiadomość typu Master jest z tego powodu przeznaczona tylko dla wysyłania danych i dlatego powinna być wypełniona wyłącznie karta "Dane-wysłanie". Wiadomość typu Slave jest przeznaczona tylko dla odbioru danych i dlatego powinna być wypełniona wyłącznie karta "Dane-odbiór". Obie karty należy wypełnić danymi, które mają być transmitowane.
Ponieważ w kartach danych określane są wyłącznie dane rzeczywiste, które są zależne wyłącznie od danej aplikacji, to przycisk "Ustawienie danych" nie jest dostępny i projektant sam musi wypełnić dane w opisywanych kartach.

Komunikacja z zastosowaniem rozszerzenia RK512

Opis nagłówków RK512:
Niektóre urządzenia transmitujące wiadomości poprzez protokół 3964 wysyłają przed danymi "użytkownika" nagłówek wiadomości. Nagłówek ten posiada normowany wygląd. Niżej opisane nagłówki można wytworzyć automatycznie przy pomocy przycisku "Ustawienie danych" w obiekcie PmaCommMsg. Żeby przycisk "Ustawienie danych" był aktywny, to w parametrach protokołu jest konieczne uaktywnienie rozszerzenia RK512. To rozszerzenie definiuje dwa rodzaje normowanych nagłówków. Przy pomocy długiego nagłówka zostają wysyłane wiadomości typu Master, którego odbiór oczekują wiadomości typu Slave. I odwrotnie, krótki nagłówek wysyłają jako odpowiedź wiadomości typu Slave, którego odbiór oczekują wiadomości typu Master.

Długi nagłówek zawiera następujące pozycje (wszystkie są typu Byte):
0 - Tg1: (Telegrammkennung) Standardowo znajduje się tutaj wartość 0. Jeżeli występuje tutaj wartość 255, wtedy oznacza, że wiadomość jest dalszym ciągiem poprzedniej wiadomości i w tym przypadku nagłówek składa się tylko z pierwszych czterech pozycji (w tym wypadku jest konieczne użycie tzw. "którkiego nagłówka" - patrz dalej).
1 - Tg2: (Telegrammkennung) Standardowo znajduje się tutaj wartość 0.
2 - Cmd: Polecenie. Asc("A") lub Asc("O") = SEND, Asc("E") = FETCH. Jeżeli nadajemy dane dla strony przeciwnej (SEND), wtedy ustawiamy tutaj 'A' lub 'O'. Jeżeli natomiast wymagamy dane od strony przeciwne (FETCH), wtedy ustawiamy tutaj 'E'.
3 - CmdTyp: Typ polecenia, na przykład Asc('D')=blok danych. Standardowo może mieć jedną z następujących wartości:
'D' - (Datenbaustein) blok danych (wykorzystuje się najczęściej)
'X' - (erweiterter Daten) uzupełniający DB blok
'E' - (Eingangsbytes) dane wejść
'A' - (Ausgangsbytes) dane wyjść
'M' - (Merkerbytes) oznaczenia
'Z' - (Zahlerzellen) licznik
'T' - (Zeitzellen) czasomierz
'S' - (absolute Adressen) adres bezwzględny
'B' - (Systemadressen) adres systemowy
'P' - (Peripheriebytes) dane peryferiów
'Q' - (erweiterte Peripherie) rozszerzone peryferia
4 - Addr1: Docelowy adres (dla SEND) lub źródłowy adres (dla FETCH) danych. Najczęściej występuje tu numer bloku danych - "DB_Nr. high".
5 - Addr2: Adres danych. Występuje tu wartość 0 lub offset. Najczęściej występuje tu "DW_Nr. low".
6 - Ndat1: Wyższy bajt ilości transmitowanych danych. Prakticznie zawsze będzie tutaj 0.
7 - Ndat2: Niższy bajt ilości transmitowanych danych. Ilość transmitowanych danych określa się w bajtach lub w słowach.
8 - Koord: Zazwyczaj występuje tu 255. W innym przypadku jest to ilość bajtów znaków koordynacyjnych.
9 - KooCPU: Zazwyczaj występuje tu 255. W innym przypadku:
bit 0-3 = ilość bitów znaków koord., inaczej 16
bit 4-7 = numer CPU


Krótki nagłówek zawiera następujące pozycje (wszystkie są typu Byte):
Tg1: (Telegrammkennung) Standardowo znajduje się tutaj wartość 0. Jeżeli występuje tutaj wartość 255, wtedy oznacza, że wiadomość jest dalszym ciągiem poprzedniej wiadomości.
Tg2: (Telegrammkennung) Standardowo znajduje się tutaj wartość 0.
Cmd: Wartość 0.
Fn: Numer błędu (Fehlernummer des Partners)


Przykład ustawienia wiadomości dla rozszerzenia RK512:
Wiadomość typu Master, która zapisuje 3 słowa na offsety DW4 do DW6 do bloku danych 61, tzn. DB61:
W karcie "Dane-wysłanie" znajdują się zmienne:
Tg1 = 0
Tg2 = 0
Cmd = Asc("A")
CmdTyp = Asc("D")
Addr1 = 61
Addr2 = 4 (1.transmitowane słowo jest DW4)
Ndat1 = 0
Ndat2 = 3 (transmitowane są 3 słowa)
Koord = 255
KooCPU = 255
DW4 = 1 (Zawartość 1.transmitowanego słowa, typ danych Integer)
DW5 = 2 (Zawartość 2.transmitowanego słowa, typ danych Integer)
DW6 = 3 (Zawartość 3.transmitowanego słowa, typ danych Integer)

W karcie "Dane-odbiór" znajdujuą się zmienne:
Tg1 = 0
Tg2 = 0
Cmd = 0
Fn = 0

Dalsze informacje

Uproszczony opis przebiegu komunikacji:
Poniższy opis jest wyłącznie o charakterze informacyjnym i projektant nie musi znać tych informacji. Chodzi o uproszczony opis tego, jak fizycznie przebiega transmisja na łączu.
Znajomość tego jednak może pomóc przy przeglądaniu INFO systemu: pozycji "COMM/Pm3964", karty "Monitor".
Załóżmy, że chcemy transmitować dane (n bajtów) typem transmisji bez nagłówka (w przypadku rodzaju transmisji z nagłówkiem uważalibyśmy nagłówek za zwykłe dane). W tym przypadku transmisja wygląda następująco:

- STX ------> wysłanie znaku STX (02hexa)
- <------ DLE otrzymanie odpowiedzi w znaku DLE (10hexa)
- 1.bajt ------> wysłanie danych właściwych
- 2.bajt ------>
- ...
- n.bajt ------>
- DLE ------> wysłanie znaku DLE (10hexa)
- ETX ------> wysłanie znaku ETX (03hexa)
- BCC ------> wysłanie sumy kontrolnej (tylko dla protokół 3964R)
- <------ DLE otrzymanie odpowiedzi w znaku DLE (10hexa)
 
Odbiór znaku DLE oznacza w tym przypadku odpowiedź pozytywną. Odebranie znaku NAK (15hex) to znaczy negatywną odpowiedź i wysłanie wiadomości zostanie powtórzone. Proces odbioru wiadomości przebiega dokładnie odwrotnie.

Wskazówki podczas rozruchu komunikacji:
Najczęstsze usterki podczas pierwszych prób komunikacji występują w formie błędnego podłączenia kabli komunikacyjnych. Jeżeli kabel jest już w porządku, lecz komunikacja wciąż nie działa, wtedy jest konieczne zwrócenie uwagi na ustawienia programowe, na przykład:
- Kontrola parametrów komunikacji (szybkość transmisji, długość danych, parytet, ilość bitów stopu)
- Sprawdzenie czy chodzi o typ transmisji z nagłówkiem lub bez nagłówka
- Kontrola poprawności ustawienia wartości w nagłówku (w przypadku typu transmisji z nagłówkiem)

Dużo informacji można odczytać w pozycji "COMM" INFO systemu.
© MICROSYS, spol. s r.o.