Promotic
WikipediaLinkedInYoutubeTwitterFacebook

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

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:
- Wykorzystanie tego drivera jest powiązane z zakupem licencji: Pm3964. Z wersją freeeware PmFree lub przy opracowywaniu aplikacji (z licencją deweloperską w celach testowania) element ten zawsze funkcjonuje.
- Komunikacja przebiega po łączu szeregowym komputera (COM1, COM2 ...).
- Chodzi o komunikację typu punkt-punkt, tzn. że przy pomocy jednego obiektu PmComm można komunikować się tylko z jednym urządzeniem (protokół nie umożliwia adresacji urządzeń).
- Driver jest wbudowany do systemu PROMOTIC przy pomocy obiektu PmComm.

Driver umożliwia wykorzystanie obiektu PmCommMsg. Nie można stosować obiekt PmCommData.

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

 
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ć większa ilość obiektów PmCommMsg typu MASTER (patrz konfigurator "Typ wiadomości"), lecz TYLKO JEDEN obiekt typu SLAVE.
 
Uwagi dotyczące komunikacji typu SLAVE w systemie PROMOTIC:

Wiadomość Slave jest taką wiadomością, 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 jest przeznaczony 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 PmCommMsg), przy czym pierwszy tylko odbiera dane a drugi dane wysyła.

W celu poprwanej odpowiedzi wiadomości Slave najczęściej wykorzystuje się zdarzenie onDataReceive, która zostanie wywołana bezpośrednio PO odbiorze danych lecz PRZED wysłaniem odpowiedzi. W tym zdarzeniu można stwierdzić (z danych zakładki Dane-odbiór) w jaki sposób trzeba odpowiadać i według tego ustawić dane w zakładce Dane-wysłanie.

 
Komunikację szeregową poprzez protokół K3964(R) wykorzystuje całe szereg automatów technologicznych jak na przykład:
- SIMATIC - firma SIEMENS (bezpośrednio wbudowane lub można wykorzystać kartę komunikacyjną CP525)
- INTECONT - firma SCHENCK
 

Zalecone wartości parametrów:

Zalecane wartości dla pozycji Parametry łącza szeregowego:
Prędkość transmisji9600 Bd
Ilość bitów informacji8
ParzystośćEVEN (parzysty)
Ilość bitów stopu1
Limit czasu pomiędzy odbiorem 2 znaków220 ms (wg. 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 RK512Uaktywnia automatyczne wytwarzanie nagłówków wiadomości definowanych według rozszerzenia RK512. Nagłówki można wygenerować przez naciśnięcie 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 zostaa zezwolona, wtedy w protokole będzie znajdować się suma kopntrolna XOR. Chodzi o nagminnie wykorzystywany 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 w komputerach PC. Z tego powodu driver konwertuje te wartości.

Jeżeli jednak jest uaktywniona omawiana opcja, wtedy konwersja nie wykonuje się. To jest konieczne na przykład przy komunikacji z wagami SCHENCK, gdzie format danych jest taki sam jak w komputerach PC.

Maksymalna wielkość wiadomości [byte]Określa maksymalną ilość bajtów wiadomości (odbieranej lub wysyłanej) bez znaków kontrolnych (tzn. maks. wielkość danych ustawianych w zakładkach Dane-wysłanie lub Dane-odbiór).
Timeout potwierdzenia po STX [ms]Określa limit czasu pomiędzy wysłaniem znaku STX i odbiorem znaku DLE. Chodzi o tzw. timeout QVZ i standarowe ustawienie jest 2000 lub 550 ms (zależne od dokumentacji).
Timeout potwierdzenia po ETX [ms]Określa limit czasu pomiędzy wysłaniem danych i odboirem znaku DLE. Standardowo powinien być taki sam jak "Timeout potwierdzenia po STX [ms]".
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). Jest to limit czasu pomiędzy odbiorem DLE po wysłaniu wiadomości i odbiorem STX. Standardowo powinien być taki sam jak "Timeout potwierdzenia po STX [ms]".

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 wyłącznie do wysyłania danych i z tego powodu powinna być wypełniona wyłącznie zakładka Dane-wysłanie. Wiadomość typu Slave jest przeznaczona wyłącznie do odbioru danych i z tego powodu powinna być wypełniona wyłącznie zakładka Dane-odbiór. Obie zakładki należy wypełnić danymi, które mają być transmitowane.

Ponieważ w pozycjach 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 zakładkach.

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 wytwarzać automatycznie przy pomocy przycisku "Ustawienie danych" w danym obiekcie PmCommMsg. Ż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 pozycja (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 przedstawia 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. do 3. = ilość bitów znaków koord. inaczej 16
bit 4. do 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 tj. DB61:

W zakładce 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 Integer)
DW5 = 2 (Zawartość 2.transmitowanego słowa, typ Integer)
DW6 = 3 (Zawartość 3.transmitowanego słowa, typ Integer)

W zakładce 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: elementy "COMM/Pm3964", zkładki "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.byte ------> wysłanie danych właściwych
- 2.byte ------>
- ...
- n.byte ------>
- DLE ------> wysłanie znaku DLE (10hexa)
- ETX ------> wysłanie znaku ETX (03hexa)
- BCC ------> wysłanie sumy kontrolnej (tylko w przypadku protokołu 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 poprwanie, wtedy jest koniecznością 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 czy też 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ć z INFO systemu na pozycji COMM.

© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice