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ń).
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:
Prędkość transmisji | 9600 Bd |
Ilość bitów informacji | 8 |
Parzystość | EVEN (parzysty) |
Ilość bitów stopu | 1 |
Timeout pomiędzy odbiorem 2 znaków | 220 ms (według dokumentacji timeout ZVZ) |
---|
Wyskoi priorytet | Okreś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 RK512 | Zezwolenie/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 danych | PLC 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 odpowiedzi | Okres 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.