Promotic
WikipediaLinkedInYoutubeTwitterFacebook

PmIEC8705 - Driver do komunikacji poprzez protokół wg normy IEC 60870-5

Driver komunikuje się poprzez protokół wg normy IEC 60870-5.
 
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:
- Zastosowanie tego drivera wymaga zakup licencji PmIEC8705. Z wersją freeeware PmFree lub przy opracowywaniu aplikacji (z licencją deweloperską w celach testowania) element ten zawsze funkcjonuje.
- Komunikacja przebiega dla Ethernetu (aplikacja PROMOTIC jest klientem) lub dla łącza szeregowego (COM1, COM2 ...).
- Dla łącza szeregowego jest stosowany protokoł IEC 60870-5-101. Obecnie jest zaimplementowany tryb transmisji zrównoważonej (balanced mode). Strona przeciwległa w tym trybie może sama wysyłać dane w razie ich zmiany. W trybie transmisj niezrównoważonej (unbalanced mode), który na razie nie jest zaimplementowany, przebiega komunikacja typu Master-Slave, tzn. strona przeciwległa (Slave) może wysyłać dane tylko jako odpowiedź na wymóg.
- Do Ethernetu jest stosowany protokoł IEC 60870-5-104. Protokół ten potrafi na przykład wysłać równocześnie kilka wiadomości i następnie czekać na potwierdzenie wszystkich. W ten sposób można osięgnęć dużych szybkości transmisji, kiedy wiadomość nie musi czekać na dokończenie (potwierdzenie) poprzedniej wiadomości.

W chwili obecnej jest zaimplementowana wyłącznie strona typu klient. To znaczy, że aplikacja PROMOTIC nawiązuje połączenie TCP z drugą stroną, która jest serwerem.

- Driver jest wbudowany do systemu PROMOTIC przy pomocy obiektu PmaComm.

Driver wspiera stosowanie obiektów PmaCommMsg oraz PmaCommGroup. Dla zwykłych przypadków transmisji danych dogodniejszym jest zastosowanie obiektu PmaCommGroup.

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

 

Zalecone wartości parametrów:

Zalecane wartości dla pozycji Parametry łącza szeregowego:
Prędkość transmisji4800 Bd (i wyższy)
Ilość bitów informacji8 (obowiązkowe)
ParzystośćEVEN (parzysty). Standard IEC 60870-5-101 bezpośrednio nadmienia, że parytet "EVEN (parzysty)" jest wykorzystywany w celu zapewnienia integralności danych "class I2". Jeżeli jest konieczny inny parytet, wtedy nie musi być zapewniony taki sam poziom integralności danych.
Ilość bitów stopu1 (obowiązkowe)
Zalecane wartości dla pozycji Parametry Ethernet-klient:
Numer portu TCP/UDP2404 (według normy IEC 60870-5-104)
Typ transmisji EthernetTCP (obowiązkowe)
Ilość powtórzeń przy nieudanej Master transmisji0 (obowiązkowe)
Timeout transmisji jednego pakietu [ms]2000 (w tym przypadku chodzi tylko o timeout od wysłania wiadomości, nie od odbioru wiadomości.)
Filtrować znaki ECHONie
Podłączyć dopiero przy pierwszej transmisjiNIE zaznaczać (obowiązkowe)
Zamknij połączenie po każdej transmisjiNIE zaznaczać (obowiązkowe)
Opis i zalecane wartości dla pozycji Parametry protokołu dla normy IEC 60870-5-101:
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).
TypOkreśla podstawowy rodzaj transmisji zdefiniowany w normie IEC 60870-5:
1=Tryb zrównoważony (Balanced mode) - Przeciwległa strona w tym trybie sama wysyła dane przy ich zmianie
0=Tryb niezrównoważony - Ten tryb transmisji nie jest na razie zaimplementowany. Chodzi o komunikację typu Master-Slave, kiedy strona przeciwległa (Slave) może przesyłać dane wyłącznie jako odpowiedź na zapytanie.
Wielkość Link adresu stacjiIlość bajtów (oktetów) dla adresu Link (Link address) w protokole: 0/1/2 bajty
Link adres niniejszej stacjiLink adres komputera, na którym jest uruchomiona aplikacja PROMOTIC
Link adres drugiej stacjiLink adres stacji, z którą komunikuje się aplikacja PROMOTIC:
Dla "Tryb zrównoważony (Balanced mode)": Komunikacja wyłącznie z jedną stacją. Zmienna LinkAddr w karcie "Dane-wysłanie" każdej Master wiadomości komunikacyjnej nie jest brana pod uwagę.
Dla "Tryb niezrównoważony": Konfigurator ten nie jest wyświetlany. Adres określa się w zmiennej LinkAddr w karcie "Dane-wysłanie" każdej Master wiadomości.
Opis i zalecane wartości dla pozycji Parametry protokołu dla normy IEC 60870-5-104:
Typ danych protokołuIEC 870-5-104. Dla Ethernetu jest na razie wspierany tylko niniejszy protokół.
k = Maks. ilość wysłanych wiadomości oczekujących potwierdzenia12 (standardowa wartość według normy). Minimum = 1, Maksymum = 32767.
w = Maks. ilość odebranych wiadomości oczekujących potwierdzenia8 (standardowa wartość według normy). Minimum = 1, Maksymum = 32767. Zalecenie: wartość w nie powinna przekroczyć dwu trzecich wartości k.
t0 = Zwłoka podczas nawiązywania połączenia [ms]30000 (standardowa wartość według normy). Minimum = 1000 ms, Maksymum = 255000 ms. Jeżeli połączenie zostanie zakończone, wtedy automatycznie nawiązanie połączenia rozpocznie się dopiero po upływie tej zwłoki.
t1 = Zwłoka [ms] odebrania potwierdzenia wysyłanej wiadomości (S-Frame)15000 (standardowa wartość według normy). Minimum = 1000 ms, Maksymum = 255000 ms.
t2 = Zwłoka [ms] wysłania potwierdzenia odebranej wiadomości (S-Frame)10000 (standardowa wartość według normy). Minimum = 1000 ms, Maksymum = 255000 ms.
t3 = Zwłoka [ms] wysłania testu połączenia (U-Frame TESTFR)20000 (standardowa wartość według normy). Minimum = 1000ms, Maksymum = 48 h = 172800000 ms.
Opis i zalecane wartości dla pozycji Parametry protokołu wspólne dla obu norm:
Wielkość wspólnego adresu ASDUIlość bajtów (oktetów) dla wspólnego adresu (ASDU Common address) danych: 1/2 bajty
Wielkość adresu informacyjnego obiektu ASDUIlość bajtów (oktetów) dla adresu obiektu z danymi: 1/2/3 bajty
Wielkość wartości "przyczyna transmisji"Ilość bajtów (oktetów) dla "przyczyna transmisji": 1/2 bajty
Typ zakończenia poleceńPolecenie IEC jest ogólnie transmitowane w kilku wiadomościach komunikacyjnych ("przyczyna transmisji" = 6=act, 7=actcon, 8=deact, 10=actterm ...). W tym miejscu można określić, kiedy transmisja polecenia jest uważana za zakończoną.
0 = czekaj na odbiór jeżeli "przyczyna transmisji"=10=actterm - Transmisja polecenia jest zakończona po odbiorze 10=actterm.
1 = nie czekaj na odbiór - Transmisja polecenia jest zakończona po przesłaniu niniejszego polecenia, nie jest oczekiwany odbiór 10=actterm.
Norma IEC 60870-5 definiuje niektóre parametry komunikacji jako opcjonalne (np. długości adresów). Dla danego systemu komunikacyjnego są takie wartości dane i tutaj jest konieczne ich określenie w parametrach protokołu.

Opis komunikacji przy pomocy obiektu PmaCommGroup

Dla niniejszego drivera można zastosować obiekty PmaCommGroup (na razie jest mośliwy tylko odbiór danych). Dla zwykłego odbioru ASDU zmiennych jest to bardziej stosowne niż stosowanie obiektu PmaCommMsg ustawiony do komunikatu "Odbiór danych" typu Slave. Można odbierać wszystkie rodzaje ASDU danych/poleceń niżej przedstawionych, patrz Lista oraz opis wspieranych ASDU.

Konfigurator "PmaCommGroup > Parametry > Szybkość odświeżania komunikacji [ms]" dla tego drivera nie jest wykorzystany i jest ustawione na 0. Obiekt nie nadaje wezwań do wysłania danych.

Dla IEC 60870-5-101 nadaje jedna strona sama przez się lub można zażądać transmisji danych wysłaniem wiadomości Master typu "Żądanie danych".
Dla IEC 60870-5-104 jest konieczne po stronie PROMOTIC wywołanie wiadomości Master typu "Żądanie danych" (patrz Opis zapytania o dane dla IEC 60870-5-104.).

 
W jednym obiekcie PmaComm może się znajdować kilka obiektów PmaCommGroup. Zmienne zdefiniowane w różnych PmaCommGroup jednak zawsze muszą się różnić wartością wspólnego adresu (ASDU Common Address). To znaczy, że w jednym obiekcie PmaCommGroup mogą być na przykład 2 zmienne każda o innym wspólnym adresie, w dwu obiektach PmaCommGroup jednak nie mogą się znajdować zmienne z takim samym adresem wspólnym.
 
Opis konfiguratora "ItemID":

ItemId jest identyfikatorem tekstowym pozycji, który służy do adresacji parametru w urządzeniu. Z konfiguratora ItemID driver stwierdzi, w jaki sposób ma zostać wartość pozycji wczytana lub wysłana.

Tekst można wpisać ręcznie, lub ułożyć przy pomocy okna, które zostanie otwarte przy pomocy przycisku wprawo od konfiguratora.

Do wprowadzenia można zastosować Makro wyrażenie (wartość jest obliczana po uruchomieniu aplikacji).

 
Identyfikator ItemId może mieć wygląd na przykład "CA1501.v6", gdzie:
- 1. część określa wspólny adres (ASDU common address) (CA1501 = Commnon Address 1501).
- 2. część określa adres obiektu informacyjnego i jego typ wartości tego obiektu (v6 = wartość pod adresem 6). Typy:
v = Value = wartość pozycji
q = Qualif = kwalifikator, patrz Typy oraz wartości kwalifikatorów (Qualif).
t = Time
 
Opis konfiguratora "PmaCommGroup > Parametry > Parametry specjalne":
Niniejszy konfigurator nie jest stosowany przez dany driver.

Opis komunikacji przy pomocy obiektu PmaCommMsg - Master wiadomości:

- Kontrola połączenia z niniejszej stacji: Tylko dla normy IEC 870-5-101. Wiadomość nawiąże połączenie ze stacją przeciwległą. Ta wiadomość powinna być zastosowana zawsze na początku komunikacji.

Dla normy IEC 870-5-104 kontrola połączenia jest wykonywana automatycznie przez driver i projektant ma możliwość wpływu na to wyłącznie przy pomocy parametrów protokołu "t3 = Zwłoka [ms] wysłania testu połączenia (U-Frame TESTFR)".

W karcie "Dane-wysłanie" znajdują się zmienne:
- LinkAddr: (Long) Zmienna ma znaczenie tylko dla IEC 870-5-101 typu "Tryb niezrównoważony". Określa link adres stacji, z którą wiadomość ma komunikować się.
W karcie "Dane-odbiór" znajdujuą się zmienne:
- State: (Integer) określa wynik kontroli (0=niezinicjalizowane, 1=kontrola przebiegła poprawnie, 2=kontrola zakończyła się błędem).
 
- Przesłanie danych: Wiadomość prześle dane/polecenie do satcji przeciwległej.
W konfiguratorze "PmaCommMsg > Parametry > Parametry wiadomości" wprowadzane są następujące dane:
Typ wysyłanych danychMoże wysyłać wszystkie typy ASDU danych/poleceń przedstawionych niżej, patrz Lista oraz opis wspieranych ASDU.
Ilość pozycjiTam gdzie jest to możliwe można wysyłać większą ilość danych tego samego rodzaju (jest to możliwe w przypadku niektórych typów danych, nie jest to możliwe w przypadku poleceń).
Tryb wysłaniaKonfigurator ten jest widoczny tylko jeżeli protokół jest IEC 870-5-101. Dla protokołu IEC 870-5-104 transmisja zawsze odbywa się w trybie 0 = Przesłanie nie zażądanych danych.
0 = Przesłanie nie zażądanych danych - Standardowe "Master" przesłanie danych bez uprzedniego czekania na odbiór wymogu.
1 = Przesłanie spontanicznie zażądanych danych - Przesłanie danych po odbiorze wymogu na dane zmianowe (spontaniczne). Dane zostaną wysłane z przyczyną transmisji 3=spont i po wysłaniu danych nie jest oczekiwane żadne potwierdzenie.
2 = Przesłanie danych zażądanych powszechnym pytaniem - Wysłanie danych po odbiorze wymogu na wszystkie dane. Dane zostaną wysłane z przyczyną transmisji 20=inrogen i po wysłaniu danych nie jest oczekiwane żadne potwierdzenie.
W karcie "Dane-wysłanie" znajdują się zmienne:
LinkAddr: (Long) Zmienna ma znaczenie tylko dla IEC 870-5-101 typu "Tryb niezrównoważony". Określa link adres stacji, z którą wiadomość ma komunikować się.
CmnAddr: (Long) common address of ASDU

Dalsze zmienne są zależne od wybranego typu i ilości nadawanych danych., Na przykład:

IoAddr: (Long) adres pozycji
Value: (Byte) wartość pozycji
Qualif: (Byte) kwalifikator, patrz Typy oraz wartości kwalifikatorów (Qualif).
W karcie "Dane-odbiór" nie ma żadnej zmiennej.
 
- Żądanie danych: Wiadomość prześle żądanie o dane do przeciwległej stacji. Stacja przeciwległa następnie prześle wszystkie wartości (wartości te będzie odbierać obiekt PmaCommGroup lub wiadomość Slave typu "Odbiór danych""). Zasadniczo jest to równoważne z wysłaniem polecenia ASDU-100 przy pomocy Master wiadomości typu "Przesłanie danych" (tam może być ustawiana również wartość "przyczyna transmisji").
W karcie "Dane-wysłanie" znajdują się zmienne:
LinkAddr: (Long) Zmienna ma znaczenie tylko dla IEC 870-5-101 typu "Tryb niezrównoważony". Określa link adres stacji, z którą wiadomość ma komunikować się.
CmnAddr: (Long) common address of ASDU
Oper: (Long) Określa, czy zapotrzebowanie o dane ma zostać zaktywowane (wartość 0) lub dezaktywowane (wartość 1).
Type: (Long) Typ wymaganych danych (20=global, 21=group1, 22=group2 .. 36=group16)
W karcie "Dane-odbiór" znajdujuą się zmienne:
Flag: (Long) Znacznik, czy aktywacja (wartość 7) lub deaktywacja (wartość 9) przebiegła pomyślnie.
Type: (Long) Typ wymaganych danych (20=global, 21=group1, 22=group2 .. 36=group16)
 
- Polecenie synchronizacji czasu: Wiadomość prześle czas bieżący do stacji przeciwległej. Obecnie wiadomość ta jest zaimplementowana tylko dla protokoł IEC 870-5-101.
W karcie "Dane-wysłanie" znajdują się zmienne:
LinkAddr: (Long) Zmienna ma znaczenie tylko dla IEC 870-5-101 typu "Tryb niezrównoważony". Określa link adres stacji, z którą wiadomość ma komunikować się.
CmnAddr: (Long) common address of ASDU
W karcie "Dane-odbiór" nie ma żadnej zmiennej.

Opis komunikacji przy pomocy obiektu PmaCommMsg - Slave wiadomości:

- Kontrola połączenia z przeciwległej stacji: Wiadomość przyjmuje komunikaty kontroli połączenia ze stacji przeciwległych i automatycznie na nie odpowiada.
W karcie "Dane-wysłanie" znajdują się zmienne:
- ErrorFlag: (Long) Wartość zmiennej można ustawić jako stałą lub można ją na przykład zmienić po odbiorze w zdarzeniu onDataReceive. Wartość określa, jaka będzie odpowiedź drugiej stronie:
0 = zostanie wysłana odpowiedź z pozytywnym potwierdzeniem kontroli połączenia.
1 = zostanie wysłana odpowiedź z negatywnym potwierdzeniem kontroli połączenia (tylko dla IEC 870-5-101).
2 = odpowiedź nie zostanie w ogóle wysłana.
W karcie "Dane-odbiór" znajdujuą się zmienne:
- MsgType: (Integer) Wartość zmiennej informuje o rodzaju kontroli.
W przypadku protokołu IEC 870-5-104 może mieć tylko jedną wartość:
2=test połączenia (U-Frame TESTFR).
W przypadku protokołu IEC 870-5-101 może mieć następujące wartości:
0=reset połączenia (ResetLink).
2=test połączenia (TestLink).
9=wymóg na przesłanie statusu (ReqLinkStatus).
 
- Polecenie synchronizacji czasu: Wiadomość przyjmuje czas przesłany ze stacji przeciwległych. W chwili obecnej wiadomość jest zaimplementowana tylko dla protokoł IEC 870-5-101.
W karcie "Dane-wysłanie" znajdują się zmienne:
- ErrorFlag: (Long) Zmienna ta może być ustawiona albo na wartość stałą (najczęsciej stosowanym bywa 0) lub może być na przykład zmieniana dynamicznie w zdarzeniu onDataReceive według tego, jaki rodzaj wiadomości został odebrany. Wartość określa, jaka będzie odpowiedź drugiej stronie.
0 = zostanie wysłana odpowiedź z pozytywnym potwierdzeniem kontroli połączenia.
1 = zostanie wysłana odpowiedź z negatywnym potwierdzeniem kontroli połączenia.
2 = odpowiedź nie zostanie w ogóle wysłana.
W karcie "Dane-odbiór" znajdujuą się zmienne:
- CmnAddr: (Long) common address of ASDU
- Invalid: (Boolean) Znacznik ważności czasu synchronizacji (false = ważny czas).
- Time: (Date) Czas, podczas którego aplikacja PROMOTIC powinna wykonać synchronizację. Na przykład w zdarzeniu onDataReceive przyszeregować:

Pm.Time = pMe.ReadVars("Time").Value

 
- Odbiór kiedy nikt nie chce: Wiadomość przyjmuje wszystkie nadesłane wiadomości ze stacji przeciwległej, których nie chce żadna inna wiadomość komunikacyjna. W ten sposób można identyfikować na przykład nadawanie danych, które nie są skonfigurowane w obiekcie PmaCommGroup lub w wiadomości "Odbiór danych".
W karcie "Dane-wysłanie" znajdują się zmienne:
- ErrorFlag: (Long) Zmienna ta może być ustawiona albo na wartość stałą (najczęsciej stosowanym bywa 0) lub może być na przykład zmieniana dynamicznie w zdarzeniu onDataReceive według tego, jaki rodzaj wiadomości został odebrany. Wartość określa, jaka będzie odpowiedź drugiej stronie.
- dla normy IEC 870-5-101: jeżeli ErrorFlag ma wartość:
0 = odpowiada pozytywne potwierdzenie (ACK)
1 = odpowiada negatywne potwierdzenie (NAK)
2 = nie odpowiada w ogóle
- dla normy IEC 870-5-104: jeżeli ErrorFlag ma wartość:
0 = odpowiada pozytywnym potwierdzeniem (komunikatem systemowym S-FRAME lub w przypadku poleceń wiadomością odpowiadającą ASDU-100 z "przyczyna transmisji"=7=actcon)
2 = nie odpowiada w ogóle
4 = tak samo jak 0 lecz dla poleceń zostanie wysłane 10=actterm
5 = tak samo jak 0 lecz dla poleceń zostanie wysłane 7=actcon oraz 10=actterm

Jeżeli nei byłoby takiej wiadomośći (lub zawsze miała ustawiono ErrorFlag=2), wtedy stacje przeciwległa nie otrzymała by odpowiedź i odłączyła by połączenie.

W karcie "Dane-odbiór" znajdujuą się zmienne:
- CField: (Byte) Wartość protokołu ControlField.
- LinkAddr: (Byte) Adres liniowy
- CmnAddr: (Long) common address of ASDU
- AsduType: (Long) Typ ASDU, patrz Lista oraz opis wspieranych ASDU
- Cause: (Long) przyczyna transmisji, patrz Znaczenie i wartości parametru "przyczyna transmisji"
- NmbObj: (Long) Ilość obiektów danych w odebranej wiadomości
 
- Odbiór danych: Niniejsza wiadomość je przestarzała oraz dogodniejszym jest zastosowanie obiektu PmaCommGroup.

Wiadomość przyjmuje dane przesyłane ze stacji przeciwległych. Stacja przeciwległa przesyła dane, które zostały zmienione. Można odbierać wszystkie rodzaje ASDU danych/poleceń niżej przedstawionych, patrz Lista oraz opis wspieranych ASDU.

W obiekcie znajduje się parametr wiadomości "Typ informacji o odebranych danych" który można ustawić na 0 lub 1. Parametr ten określa w jaki sposób będzie system informowany o odebranych danych. Dla 0 (wariant mniej ogólny) w karcie "Dane-odbiór" zostaną wytworzone pozycje FillLastIndex oraz FillLastAddr, które przy każdym odbiorze będą zawierać indeks i adres ostatnio odebranej pozycji. Jeżeli są odbierane wiadomości z kilkima danymi, wtedy jest lepiej rozwiązaniem zastosowanie parametru 1. Dla 1 zostaną wytworzone pozycje FillIndexes oraz Reserve. Pozycja FillIndexes jest typu Array i zawiera indeksy wszystkich odebranych danych w odebranej wiadomości. Pozycja Reserve nie jest wykorzystana, zawsze jest równa 0.

W karcie "Dane-wysłanie" znajdują się zmienne:
- CmdAddr: (Long) common address of ASDU
W karcie "Dane-odbiór" znajdujuą się zmienne:
- 0. FillCount: (Long) Ilość obiektów danych, które przesłała stacja przeciwległa. Komunikacja jest często ustawiona w ten sposób, że jedna transmisja prześle tylko jeden obiekt. W tym przypadku w zmiennej znajduje się zawsze wartość 1.
- 1. FillLastIndex (lub FillIndexes): (Long) Indeks zmiennej (lub pole indeksów zmiennych), do której była zapisana wartość (wartości).
- 2. FillLastAddr (lub Reserve): (Long) IO adres obiektu, którego wartość była ostatnim razem zapisana do odpowiedniej zmiennej (lub nie wykorzystane).
- 3. Z kolei następują dane użytkownika do odbioru obiektów z danymi. Przy pierwszym wytworzeniu driver uzupełni 6 zmiennych jako przykład (zmienne te mogą zostać usunięte, uzupełnione lub zmienione). Nazwy zmiennych mogą być dowolne. Jednak musi być poprawnie wypełniona Notatka. Na tym miejscu określa się adres obiektu wg następującego przykładu:
Zmienna pod indeksem 3 (za zmienną FillLastAddr) posiada notatkę: v95 (v jako value)
Zmienna pod indeksem 4 (typu Date) posiada notatkę: t95 (t jako time).
Zmienna pod indeksem 5 (typu Byte) posiada notatkę: q95 (q jako qualifier).
Zmienna pod indeksem 6 (typu Byte) posiada notatkę : c95 (c jako cause = "przyczyna transmisji").

Jeżeli zostanie przyjęta informacja o obiekcie z adresem 95, wtedy do zmiennej v95 zostanie zapisana wartość (value) obiektu, do zmiennej t95 zostanie zapisany czas (time) obiektu, do zmiennej q95 zostanie zapisany kwalifikator (qualifier) obiektu oraz do zmiennej c95 zostanie zapisana "przyczyna transmisji". Zmienne t95, q95 oraz c95 nie muszą wystąpić (w tym przypadku jest odebrana tylko wartość) lecz jeżeli występują, wtedy muszę się znajdować (w dowolnej kolejności) bezpośrednio za zmienną v95.

Za zmienną v95 mogą się znajdować następne dane wypełnione wg tej samej zasady.

Patrz również: Konfiguracja wstępna "PmIEC8705 - Ethernet 104 - Zestaw komunikacji z danymi i panelem"

Lista oraz opis wspieranych ASDU

Można odbierać następujące rodzaje danych ASDU (w obiekcie PmaCommGroup lub przy pomocy wiadomości Slave typu "Odbiór danych") oraz wysyłać (przy pomocy wiadomości Master typu "Przesłanie danych"):
ASDUs dla informacji zarządzania w kierunku monitorowania:
ASDU-1 (M_SP_NA_1) = Single-point information:
- Wartość (Value) jest typu Byte, 0=Wyłączone, 1=Włączone.
- Kwalifikator (Qualif) typu SIQ
- Czas (Time) nie jest stosowany.
ASDU-2 (M_SP_TA_1) = Single-point information, time CP24:
- Wartość (Value) jest typu Byte, 0=Wyłączone, 1=Włączone.
- Kwalifikator (Qualif) typu SIQ
- Czas (Time) na razie nie jest zaimplementowany.
ASDU-3 (M_DP_NA_1) = Double-point information:
- Wartość (Value) jest typu Byte, 0=Stan nieokreślony lub przejściowy, 1=określony stan Wyłączone, 2=określony stan Włączone, 3=Stan nieokreślony.
- Kwalifikator (Qualif) typu DIQ
- Czas (Time) nie jest stosowany.
ASDU-4 (M_DP_TA_1) = Double-point information, time CP24:
- Wartość (Value) jest typu Byte, 0=Stan nieokreślony lub przejściowy, 1=określony stan Wyłączone, 2=określony stan Włączone, 3=Stan nieokreślony.
- Kwalifikator (Qualif) typu DIQ
- Czas (Time) na razie nie jest zaimplementowany.
ASDU-5 (M_ST_NA_1) = Step position information:
- Wartość (Value) jest typu Byte oraz przedstawia indykację poprzedniego stanu w celu sygnalizacji pozycji. Najwyższy bit wartości: 0 = urządzenie nie znajduje się w stanie przejściowym, 1 = urządzenie znajduje się w stanie przejściowym.
- Kwalifikator (Qualif) typu QDS
- Czas (Time) nie jest stosowany.
ASDU-6 (M_ST_TA_1) = Step position information, time CP24:
- Wartość (Value) jest typu Byte oraz przedstawia indykację poprzedniego stanu w celu sygnalizacji pozycji. Najwyższy bit wartości: 0 = urządzenie nie znajduje się w stanie przejściowym, 1 = urządzenie znajduje się w stanie przejściowym.
- Kwalifikator (Qualif) typu QDS
- Czas (Time) na razie nie jest zaimplementowany.
ASDU-7 (M_BO_NA_1) = Bitstring of 32 bit:
- Wartość (Value) typu Long przedstawia binarną informację 32 bitów o stanie (poszczególne bity można z kolei odczytać na przykład przy pomocy metody GetBit).
- Kwalifikator (Qualif) typu QDS
- Czas (Time) nie jest stosowany.
ASDU-8 (M_BO_TA_1) = Bitstring of 32 bit, time CP24:
- Wartość (Value) typu Long przedstawia binarną informację 32 bitów o stanie (poszczególne bity można z kolei odczytać na przykład przy pomocy metody GetBit).
- Kwalifikator (Qualif) typu QDS
- Czas (Time) na razie nie jest zaimplementowany.
ASDU-9 (M_ME_NA_1) = Measured value, normalised:
- Wartość (Value) jest typu Single, zakres od -1.0 do +1.0.
- Kwalifikator (Qualif) typu QDS
- Czas (Time) nie jest stosowany.
ASDU-10 (M_ME_TA_1) = Measured value, normalised, time CP24:
- Wartość (Value) jest typu Single, zakres od -1.0 do +1.0.
- Kwalifikator (Qualif) typu QDS
- Czas (Time) na razie nie jest zaimplementowany.
ASDU-11 (M_ME_NB_1) = Measured value, with measure:
- Wartość (Value) typu Integer (zakres od -32536 do +32535) i przedstawia wartość o ustalonej podziałce (np. napięcie 10.3 kV zostanie przeniesione jako 103).
- Kwalifikator (Qualif) typu QDS
- Czas (Time) nie jest stosowany.
ASDU-12 (M_ME_TB_1) = Measured value, with measure, time CP24:
- Wartość (Value) typu Integer (zakres od -32536 do +32535) i przedstawia wartość o ustalonej podziałce (np. napięcie 10.3 kV zostanie przeniesione jako 103).
- Kwalifikator (Qualif) typu QDS
- Czas (Time) na razie nie jest zaimplementowany.
ASDU-13 (M_ME_NC_1) = Measured value, short floating point:
- Wartość (Value) jest typu Single i można zastosować cały zakres.
- Kwalifikator (Qualif) typu QDS
- Czas (Time) nie jest stosowany.
ASDU-14 (M_ME_TC_1) = Measured value, short floating point, time CP24:
- Wartość (Value) jest typu Single i można zastosować cały zakres.
- Kwalifikator (Qualif) typu QDS
- Czas (Time) na razie nie jest zaimplementowany.
ASDU-15 (M_IT_NA_1) = Integrated totals:
- Wartość (Value) jest typu Long w całym zakresie.
- Kwalifikator (Qualif) typu BCR
- Czas (Time) nie jest stosowany.
ASDU-16 (M_IT_TA_1) = Integrated totals, time CP24:
- Wartość (Value) jest typu Long w całym zakresie.
- Kwalifikator (Qualif) typu BCR
- Czas (Time) na razie nie jest zaimplementowany.
ASDU-30 (M_SP_TB_1) = Single-point information, time CP56:
- Wartość (Value) jest typu Byte, 0=Wyłączone, 1=Włączone.
- Kwalifikator (Qualif) typu SIQ
- Czas (Time) jest typu Date.
ASDU-31 (M_DP_TB_1) = Double-point information, time CP56:
- Wartość (Value) jest typu Byte, 0=Stan nieokreślony lub przejściowy, 1=określony stan Wyłączone, 2=określony stan Włączone, 3=Stan nieokreślony.
- Kwalifikator (Qualif) typu DIQ
- Czas (Time) jest typu Date.
ASDU-33 (M_BO_TB_1) = Bitstring of 32 bit, time CP56:
- Wartość (Value) typu Long przedstawia binarną informację 32 bitów o stanie (poszczególne bity można z kolei odczytać na przykład przy pomocy metody GetBit).
- Kwalifikator (Qualif) typu QDS
- Czas (Time) jest typu Date.
ASDU-34 (M_ME_TD_1) = Measured value, normalised, time CP56:
- Wartość (Value) jest typu Single, zakres od -1.0 do +1.0.
- Kwalifikator (Qualif) typu QDS
- Czas (Time) jest typu Date.
ASDU-35 (M_ME_TE_1) = Measured value, with measure, time CP56:
- Wartość (Value) typu Integer (zakres od -32536 do +32535) i przedstawia wartość o ustalonej podziałce (np. napięcie 10.3 kV zostanie przeniesione jako 103).
- Kwalifikator (Qualif) typu QDS
- Czas (Time) jest typu Date.
ASDU-36 (M_ME_TF_1) = Measured value, short floating point, time CP56:
- Wartość (Value) jest typu Single i można zastosować cały zakres.
- Kwalifikator (Qualif) typu QDS
- Czas (Time) jest typu Date.
ASDU-37 (M_IT_TB_1) = Integrated totals, time CP56:
- Wartość (Value) jest typu Long w całym zakresie.
- Kwalifikator (Qualif) typu BCR
- Czas (Time) jest typu Date.

ASDUs dla informacji zarządzania w kierunku sterowania:
ASDU-45 (C_SC_NA_1) = Single command:
- Wartość (Value) jest typu Byte, 0=Wyłączone, 1=Włączone.
- Kwalifikator (Qualif) typu QOC
- Czas (Time) nie jest stosowany.
ASDU-46 (C_DC_NA_1) = Double command:
- Wartość (Value) jest typu Byte, 0=niedopuszczalna, 1=Wyłączone, 2=Włączone, 3=niedopuszczalna.
- Kwalifikator (Qualif) typu QOC
- Czas (Time) nie jest stosowany.
ASDU-48 (C_SE_NA_1) = Set-point command, normalised:
- Wartość (Value) jest typu Single, zakres od -1.0 do +1.0.
- Kwalifikator (Qualif) typu QOS
- Czas (Time) nie jest stosowany.
ASDU-49 (C_SE_NB_1) = Set-point command, with measure:
- Wartość (Value) typu Integer (zakres od -32536 do +32535) i przedstawia wartość o ustalonej podziałce (np. napięcie 10.3 kV zostanie przeniesione jako 103).
- Kwalifikator (Qualif) typu QOS
- Czas (Time) nie jest stosowany.
ASDU-50 (C_SE_NC_1) = Set-point command, short floating point:
- Wartość (Value) jest typu Single i można zastosować cały zakres.
- Kwalifikator (Qualif) typu QOS
- Czas (Time) nie jest stosowany.
ASDU-51 (C_BO_NA_1) = Bitstring of 32 bit:
- Wartość (Value) typu Long przedstawia binarną informację 32 bitów o stanie (poszczególne bity można z kolei odczytać na przykład przy pomocy metody GetBit).
- Kwalifikator (Qualif) nie jest stosowany.
- Czas (Time) nie jest stosowany.
ASDU-58 (C_SC_TA_1) = Single command, time CP56:
- Wartość (Value) jest typu Byte, 0=Wyłączone, 1=Włączone.
- Kwalifikator (Qualif) typu QOC
- Czas (Time) jest typu Date.
ASDU-59 (C_DC_TA_1) = Double command, time CP56:
- Wartość (Value) jest typu Byte, 0=niedopuszczalna, 1=Wyłączone, 2=Włączone, 3=niedopuszczalna.
- Kwalifikator (Qualif) typu QOC
- Czas (Time) jest typu Date.
ASDU-60 (C_RC_TA_1) = Regulation step command, time CP56:
- Wartość (Value) jest typu Byte, 0=niedopuszczalna, 1=następny krok Niżej, 2=następny krok Wyżej, 3=niedopuszczalna.
- Kwalifikator (Qualif) typu QOC
- Czas (Time) jest typu Date.
ASDU-61 (C_SE_TA_1) = Set-point command, normalised, time CP56:
- Wartość (Value) jest typu Single, zakres od -1.0 do +1.0.
- Kwalifikator (Qualif) typu QOS
- Czas (Time) jest typu Date.
ASDU-62 (C_SE_TB_1) = Set-point command, with measure, time CP56:
- Wartość (Value) typu Integer (zakres od -32536 do +32535) i przedstawia wartość o ustalonej podziałce (np. napięcie 10.3 kV zostanie przeniesione jako 103).
- Kwalifikator (Qualif) typu QOS
- Czas (Time) jest typu Date.
ASDU-63 (C_SE_TC_1) = Set-point command, short floating point, time CP56:
- Wartość (Value) jest typu Single i można zastosować cały zakres.
- Kwalifikator (Qualif) typu QOS
- Czas (Time) jest typu Date.
ASDU-64 (C_BO_TA_1) = Bitstring of 32 bit, time CP56:
- Wartość (Value) typu Long przedstawia binarną informację 32 bitów o stanie (poszczególne bity można z kolei odczytać na przykład przy pomocy metody GetBit).
- Kwalifikator (Qualif) nie jest stosowany.
- Czas (Time) jest typu Date.

ASDUs dla informacji systemowych w kierunku sterowania:
ASDU-100 (C_IC_NA_1) = Interrogation command:

Wysłanie niniejszego polecenia jest możliwe lecz zasadniczo takie samo jak wysłanie Master wiadomości typu "Żądanie danych". Dodatkowo można władać "przyczyna transmisji".

- Wartość (Value) jest typu Long. Oznacza "przyczyna transmisji": 6=act, 7=actcon, 8=deact, 9=deactcon, 10=actterm.
- Kwalifikator (Qualif) typu QOI
- Czas (Time) nie jest stosowany.
ASDU-101 (C_CI_NA_1) = Counter Interrogation Command:
- Wartość (Value) jest typu Long. Oznacza "przyczyna transmisji": 6=act, 7=actcon, 10=actterm.
- Kwalifikator (Qualif) typu QCC
- Czas (Time) nie jest stosowany.

Typy oraz wartości kwalifikatorów (Qualif)

Kwalifikator pozycji (jakościowy deskryptor) daje więcej informacji na temat pozycji. Informacja może być o jakości wartości (ważne, nieważne ...) ale również o okresie, kolejności, itd.
 
Typy kwalifikatorów:
- SIQ: Jest typu Byte. Ten kwalifikator jest zawarty w ASDU-1, ASDU-2, ASDU-30.
0 = wartość normalna
5.bit = 0/1 = nie blokowane/blokowane
6.bit = 0/1 = nie zmienione/zmienione
7.bit = 0/1 = aktualna/niaktualna wartość
8.bit = 0/1 = ważna/nieważna wartość Jeżeli ustawiono dany bit, wtedy w zmiennej zostanie ustawiona właściwość Quality na "0=Bad:NonSpecific".
- DIQ: Jest typu Byte. Ten kwalifikator jest zawarty w ASDU-3, ASDU-4, ASDU-31.
0 = wartość normalna
5.bit = 0/1 = nie blokowane/blokowane
6.bit = 0/1 = nie zmienione/zmienione
7.bit = 0/1 = aktualna/niaktualna wartość
8.bit = 0/1 = ważna/nieważna wartość Jeżeli ustawiono dany bit, wtedy w zmiennej zostanie ustawiona właściwość Quality na "0=Bad:NonSpecific".
- QDS: Jest typu Byte. Ten kwalifikator jest zawarty w ASDU-(5-14), ASDU-(33-36).
0 = wartość normalna
1.bit = 0/1 = nie przepełnione/przepełnione
5.bit = 0/1 = nie blokowane/blokowane
6.bit = 0/1 = nie zmienione/zmienione
7.bit = 0/1 = aktualna/niaktualna wartość
8.bit = 0/1 = ważna/nieważna wartość Jeżeli ustawiono dany bit, wtedy w zmiennej zostanie ustawiona właściwość Quality na "0=Bad:NonSpecific".
- BCR: Jest typu Byte. Ten kwalifikator jest zawarty w ASDU-15, ASDU-16, ASDU-37. Zawiera sekwencję rekordów:
- 0-4.bit (SQ) oznacza numer sekwencyjny
- 5.bit (CY) określa, czy w odpowiednim okresie ingegracyjnym 0=nie doszło lub 1=doszło do przepełnienia licznika
- 6.bit (CA) określa, czy od ostatniego odczytu licznik 0=nie został lub 1=zostal ustawiony
- 7.bit (IV) określa, czy odczyt czujnika jest 0=ważny lub 1=nie ważny
- QOC: Jest typu Byte. Ten kwalifikator jest zawarty w ASDU-(45-46), ASDU-(58-60).
0 = bez dodatkowych informacji
1 = krótka długość sygnału
2 = długa długość sygnału
3 = stałe wyjście
>3 = zarezerwowane
Ponadto jeżeli 8.bit=0=vykonanie, 1=opcja(przygotowanie)
- QOS: Jest typu Byte. Ten kwalifikator jest zawarty w ASDU-(48-50), ASDU-(61-63).
0 = domyślne
większe niż 0 = zarezerwowane
Ponadto jeżeli 8.bit=0=vykonanie, 1=opcja(przygotowanie)
- QOI: Jest typu Byte. Ten kwalifikator jest zawarty w ASDU-100.
20 = zapytanie wysłane do stacji (globalne)
21..36 = zapytanie do grupy 1..16
- QCC: Jest typu Byte. Ten kwalifikator jest zawarty w ASDU-101. Jest to suma dwu liczb:
Pierwsza liczba to RQT wymóg: 0 = nie jest wymagany żaden czytnik, 1-4 = wymaganie czytnika grupy 1-4, 5 = całkowite zapytanie do czytnika.
Druga liczba to FRZ zmrożenie: 0 = bez zmrożenia lub zerowania, 64 = zmrożenie czytnika bez zerowania, 128 = zmrożenie czytnika z zerowaniem, 128+64 = zerowanie czytnika.

Znaczenie i wartości parametru "przyczyna transmisji"

W każdej wiadomości jest transmitowana tzw. "przyczyna transmisji", która określa powód transmisji. Wartość może mieć wielkość 1 lub 2 bajty (patrz konfigurator "Wielkość wartości "przyczyna transmisji"").
- Wartości w 1. bajcie:
- bit 0-5 określa powód transmisji:
- 0: nie jest stosowane
- 1=per/cyc: okresowe, cykliczne
- 2=back: odczyt wypełniający
- 3=spont: spontaniczny
- 4=init: inicjalizowany
- 5=req: wymóg lub wymagane
- 6=act: aktywacja
- 7=actcon: potwierdzenie aktywacji
- 8=deact: deaktywacja
- 9=deactcon: potwierdzenie deaktywacji
- 10=actterm: zakończenie aktywacji
- 11=retrem: informacja zwrotna wywołana przez polecenie odległe
- 12=retloc: informacja zwrotne wywołana przez polecenie lokalne
- 13=file: transmisja pliku
- 14-19: zarezerwowane dla następnych kompatybilnych definicji
- 20=inrogen: zażądane przez wymóg powszechny
- 21-36=inro 1-16: zażądane przez wymóg na grupę: 1-16
- 37=reqcogen: zażądane przez wymóg na licznik
- 38-41=reqco 1-4: zażądane przez wymóg na licznik grupy: 1-4
- 42-47: zarezerwowane dla następnych kompatybilnych definicji
- 48-63: do zastosowania specjalnego (zakres prywatny)
- bit 6 (P/N) określa: 0=pomyślne, 1=negatywne potwierdzenie
- bit 7 (T) określa: 0=bez próby, 1=próba
- Wartość w 2. bajcie (opcjonalne) określa "adres inicjatora" (0=domyślnie).

Opis zapytania o dane dla IEC 60870-5-104.

Strona przeciwległa może sama automatycznie nadawać dane (np. przy zmianie, wtedy bywa "przyczyna transmisji"=3=spont) i takie dane będą odbierane do zmiennych zdefiniowanych w obiekcie PmaCommGroup (można je też odbierać przy pomocy Slave wiadomości typu "Odbiór danych").

Jeżeli aplikacja PROMOTIC chce jawnie zażądać wysłania swoich danych (wszystkich, nie tylko zmienionych), wtedy aplikacja PROMOTIC musi wysłać Master wiadomość typu "Żądanie danych". Opisywana wiadomość spowoduje wysłanie ASDU-100 z "przyczyna transmisji"=6=act i następnie oczekuje odpowiedzi. Druga strona powinna jako odpowiedź wyłać wiadomość tego samego typu z "przyczyna transmisji"=7=actcon.

Druga strona z kolei będzie nadawać wiadomości z danymi (z "przyczyna transmisji"=20=inrogen), które można odbierać do zmiennych zdefiniowanych w obiekcie PmaCommGroup (lub można je odbierać przy pomocy wiadomości Slave typu "Odbiór danych").

Po zakończeniu druga strona wyśle wiadomość ASDU-100 z "przyczyna transmisji"=10=actterm - niniejszą wiadomość można odbierać przy pomocy wiadomości Slave typu "Odbiór kiedy nikt nie chce".

 
Oczywiście można postępować także odwrotnie: druga strona również może wysłać ASDU-100 z "przyczyna transmisji"=6=act, tzn. druga strona wymaga dane z aplikacji PROMOTIC. Taką wiadomość można odbierać przy pomocy Slave wiadomości typu "Odbiór kiedy nikt nie chce" z ustawionym ErrorFlag=0. P odbiorze wiadomości obiekt sam automatycznie odpowie wiadomością ASDU-100 z "przyczyna transmisji"=7=actcon. Wtedy PROMOTIC będzie nadawać dane przy pomocy Master wiadomości typu "Przesłanie danych". Po wysłaniu wszystkich danych można wysłać (w niektórych przypadkach nie jest to wymagane) wiadomość ASDU-100 z "przyczyna transmisji"=10=actterm - to można ponownie wykonać przy pomocy Master wiadomości typu "Przesłanie danych".

Historia:
Pm8.03.12: Usunięty błąd: Podczas transmisji niektórych typów powiadomień dochodziło do ubytku pamięci (PmSNMP, PmMBus, PmIEC8705, PmElgas2).
Pm8.03.08: Usunięty błąd: Po transmisji 32000 komunikacji dochodziło do zbędnego ponawiania komunikacji.
Pm8.03.05: Uogólnienie o typ ASDU-5 oraz ASDU-6.
Pm8.02.09: Jeżeli zostanie pobrana wartość ze znacznikiem niewłaściwego stanu w kwalifikatorze, wtedy danej zmiennej będzie ustawiona właściwość Quality o wartości "0=Bad:NonSpecific".
Pm8.02.06: Usunięty błąd: Uogólnienie o typ ASDU-103.
Pm8.00.11: Usunięty błąd: Były niepoprawnie przechowywane wartości konfiguracyjnego okna parametrów protokołu.
Pm8.00.09: (dla normy 101) Uogólnienie wiadomości Master typu Przesłanie danych o nowy konfigurator "Tryb wysłania" (umożliwia wysyłanie wymaganych danych).
Pm8.00.07:
- Uogólnienie o odczyt sum całkowitych (ASDU 15/16/37).
- Usunięty błąd: obiekt PmaCommGroup błędnie odbierał dane z wiadomości zawierającej kilka pozycji danych.
Pm8.00.05: Usunięty błąd: Podczas ustawienia konfiguratora "Wielkość adresu informacyjnego obiektu ASDU" do wartości 3 nie było możliwe zadresować rejestry o wyższych adresach.
Pm8.00.02: Usunięty błąd: Obiekt PmaCommGroup nie działał
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice