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 poprzez Ethernet lub po łączu szeregowym komputera (COM1, COM2 ...).
- Dla łącza szeregowego jest stosowany protokół wg. normy 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 protokół wg. normy IEC 60870-5-104. Protokół ten potrafi np. 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 PmComm.

Driver umożliwia stosowanie obiektów PmCommMsg oraz PmCommData. Dla zwykłych przypadków transmisji danych jest bardziej dogodne zastosowanie obiektu PmCommData.

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

- Przykład prostego zastosowania patrz: Przykład komunikacji poprzez protokół IEC 870-5-101.
 

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:
Numer portu TCP/UDP2404 (według normy IEC 60870-5-104)
Typ transmisji EthernetTCP (obowiązkowe)
Ilość powtórzeń przy nieudanej transmisji0 (obowiązkowe)
Czas limitu transmisji jednego pakietu [ms]2000 (w tym przypadku chodzi tylko o limit czasu od wysłania wiadomości, nie od odbioru wiadomości.)
Filtrować znaki ECHONie
Podłączyć dopiero przy pierwszej transmisjiNIE zakreślać (obowiązkowe)
Zamknij połączenie po każdej transmisjiNIE zakreślać (obowiązkowe)
Opis i zalecane wartości dla pozycji Parametry protokołu dla normy IEC 60870-5-101:
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).
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 Bytes
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 zkładce 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 zakładce 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 automatyczne 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 Bytes
Wielkość adresu informacyjnego obiektu ASDUIlość bajtów (oktetów) dla adresu obiektu z danymi: 1/2/3 Bytes
Wielkość wartości "przyczyna transmisji"Ilość bajtów (oktetów) dla "przyczyna transmisji": 1/2 Bytes
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 obiektów PmCommData

Dla niniejszego drivera można stosować obiekty PmCommData (na razie jest mośliwy tylko odbiór danych). Dla zwykłego odbioru ASDU zmiennych jest to bardziej stosowne niż zastosowanie obiektu PmCommMsg 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 PmCommData > 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 po stronie PROMOTIC konieczne wywołanie wiadomości Master typu "Żądanie danych" (patrz Opis zapytania o dane dla IEC 60870-5-104.).

 
W jednym obiekcie PmComm może się znajdować kilka obiektów PmCommData. Zmienne zdefiniowane w różnych PmCommData jednak zawsze muszą się różnić wartością wspólnego adresu (ASDU Common Address). To znaczy, że w jednym obiekcie PmCommData mogą być np. 2 zmienne każda o innym wspólnym adresie, w dwu obiektach PmCommData 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 przy uruchomieniu aplikacji).

Tekst może mieć wygląd np. "CA1501.v6".

- 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 PmCommData > Parametry > Parametry specjalne:
Niniejszy konfigurator nie jest stosowany przez dany driver.

Opis komunikacji przy pomocy obiektów PmCommMsg - Master wiadomości:

- Kontrola połączenia z niniejszej stacji: Dotyczy wyłącznie 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 zakładce 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 zakładce 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 PmCommMsg > Parametry > Parametry wiadomości wprowadzane są następujące dane:
- Typ wysyłanych danych: Może wysyłać wszystkie typy ASDU danych/poleceń przedstawionych niżej, patrz Lista oraz opis wspieranych ASDU.
- Ilość pozycji: Tam 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łania: Konfigurator 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 zakładce 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 zakładce 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ć objekt PmCommData 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 zakładce 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 zakładce 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 do protokołu IEC 870-5-101.
W zakładce 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 zakładce Dane-odbiór nie ma żadnej zmiennej.

Opis komunikacji przy pomocy obiektów PmCommMsg - 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 zakładce Dane-wysłanie znajdują się zmienne:
- ErrorFlag: (Long) Wartość zmiennej można ustawić jako stałą lub można ją np. 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 (dotyczy tylko IEC 870-5-101).
2 = odpowiedź nie zostanie w ogóle wysłana.
W zakładce 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 do protokołu IEC 870-5-101.
W zakładce 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ć 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 zakładce 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.Item("Time")

 
- 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 objekcie PmCommData lub w wiadomości "Odbiór danych".
W zakładce 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ć 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 zakładce 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 i jest bardzeij odpowiednie stosować zamiast niej obiekt PmCommData.

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. Niniejszy parametr określa w jaki sposób będzie system informowany o odebranych danych. Dla 0 (wariant mniej ogólny) w zakładce 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 lepszym rozwiązaniem zastosowanie parametru 1. Dla 1 zostaną wytworzone pozycje FillIndexes oraz Reserve. Pozycja FillIndexes jest typu danych Array i zawiera indeksy wszystkich odebranych danych w odebranej wiadomości. Pozycja Reserve nie jest wykorzystana, zawsze jest równa 0.

W zakładce Dane-wysłanie znajdują się zmienne:
- CmdAddr: (Long) common address of ASDU
W zakładce 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 na pozycji 3 (za zmienną FillLastAddr) posiada notatkę: v95 (v jako value)
Zmienna na pozycji 4 (typu Date) posiada notatkę: t95 (t jako time).
Zmienna na pozycji 5 (typu Byte) posiada notatkę: q95 (q jako qualifier).
Zmienna na pozycji 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ż: Przykład komunikacji poprzez protokół IEC 870-5-101 oraz 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 PmCommData 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) = One bit information:
- Wartość (Value) typu danych Byte, 0=Wyłączone, 1=Włączone.
- Kwalifikator (Qualif) typu SIQ
- Czas (Time) nie jest stosowany.
ASDU-2 (M_SP_TA_1) = One bit information:
- Wartość (Value) typu danych Byte, 0=Wyłączone, 1=Włączone.
- Kwalifikator (Qualif) typu SIQ
- Czas (Time) na razie nie jest zaimplementowany.
ASDU-3 (M_DP_NA_1) = Two bits information:
- Wartość (Value) typu danych 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) = Two bits information:
- Wartość (Value) typu danych 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 danych 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 with time tag CP24:
- Wartość (Value) jest typu danych 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) = Bit string of 32 bits:
- Wartość (Value) typu danych Long przedstawia binarną informację 32 bitów o stanie (poszczególne bity można z kolei odczytać na przykład przy pomocy właściwości Bit).
- Kwalifikator (Qualif) typu QDS
- Czas (Time) nie jest stosowany.
ASDU-8 (M_BO_TA_1) = Bit string of 32 bits:
- Wartość (Value) typu danych Long przedstawia binarną informację 32 bitów o stanie (poszczególne bity można z kolei odczytać na przykład przy pomocy właściwości Bit).
- Kwalifikator (Qualif) typu QDS
- Czas (Time) na razie nie jest zaimplementowany.
ASDU-9 (M_ME_NA_1) = Measured normalized value:
- Wartość (Value) typu danych Single, zakres od -1.0 do +1.0.
- Kwalifikator (Qualif) typu QDS
- Czas (Time) nie jest stosowany.
ASDU-10 (M_ME_TA_1) = Measured normalized value:
- Wartość (Value) typu danych 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 with measure:
- Wartość (Value) typu danych 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 with time mark:
- Wartość (Value) typu danych 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 float:
- Wartość (Value) typu danych 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 float:
- Wartość (Value) typu danych 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) typu danych Long w całym zakresie.
- Kwalifikator (Qualif) typu BCR
- Czas (Time) nie jest stosowany.
ASDU-16 (M_IT_TA_1) = Integrated totals with time tag:
- Wartość (Value) typu danych Long w całym zakresie.
- Kwalifikator (Qualif) typu BCR
- Czas (Time) na razie nie jest zaimplementowany.
ASDU-30 (M_SP_TB_1) = One bit information with time mark CP56:
- Wartość (Value) typu danych Byte, 0=Wyłączone, 1=Włączone.
- Kwalifikator (Qualif) typu SIQ
- Czas (Time) typu danych Date.
ASDU-31 (M_DP_TB_1) = Two bits information with time mark CP56:
- Wartość (Value) typu danych 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) typu danych Date.
ASDU-33 (M_BO_TB_1) = Bit string of 32 bits with time mark CP56:
- Wartość (Value) typu danych Long przedstawia binarną informację 32 bitów o stanie (poszczególne bity można z kolei odczytać na przykład przy pomocy właściwości Bit).
- Kwalifikator (Qualif) typu QDS
- Czas (Time) typu danych Date.
ASDU-34 (M_ME_TD_1) = Measured normalized value with time mark CP56:
- Wartość (Value) typu danych Single, zakres od -1.0 do +1.0.
- Kwalifikator (Qualif) typu QDS
- Czas (Time) typu danych Date.
ASDU-35 (M_ME_TE_1) = Measured value with meter with time mark CP56:
- Wartość (Value) typu danych 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) typu danych Date.
ASDU-36 (M_ME_TF_1) = Measured value, short float with time mark CP56:
- Wartość (Value) typu danych Single i można zastosować cały zakres.
- Kwalifikator (Qualif) typu QDS
- Czas (Time) typu danych Date.
ASDU-37 (M_IT_TB_1) = Integrated totals with time tag CP56:
- Wartość (Value) typu danych Long w całym zakresie.
- Kwalifikator (Qualif) typu BCR
- Czas (Time) typu danych Date.

ASDUs dla informacji zarządzania w kierunku sterowania:
ASDU-45 (C_SC_NA_1) = Single command:
- Wartość (Value) typu danych 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) typu danych 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 value:
- Wartość (Value) typu danych 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, value with measure:
- Wartość (Value) typu danych 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 number:
- Wartość (Value) typu danych 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 danych Long przedstawia binarną informację 32 bitów o stanie (poszczególne bity można z kolei odczytać na przykład przy pomocy właściwości Bit).
- Kwalifikator (Qualif) nie jest stosowany.
- Czas (Time) nie jest stosowany.
ASDU-58 (C_SC_TA_1) = Single command with time tag CP56:
- Wartość (Value) typu danych Byte, 0=Wyłączone, 1=Włączone.
- Kwalifikator (Qualif) typu QOC
- Czas (Time) typu danych Date.
ASDU-59 (C_DC_TA_1) = Double command with time tag CP56:
- Wartość (Value) typu danych Byte, 0=niedopuszczalna, 1=Wyłączone, 2=Włączone, 3=niedopuszczalna.
- Kwalifikator (Qualif) typu QOC
- Czas (Time) typu danych Date.
ASDU-60 (C_RC_TA_1) = Regulation step command with time tag CP56:
- Wartość (Value) typu danych Byte, 0=niedopuszczalna, 1=następny krok Niżej, 2=następny krok Wyżej, 3=niedopuszczalna.
- Kwalifikator (Qualif) typu QOC
- Czas (Time) typu danych Date.
ASDU-61 (C_SE_TA_1) = Set-point command with time tag CP56, normalised value:
- Wartość (Value) typu danych Single, zakres od -1.0 do +1.0.
- Kwalifikator (Qualif) typu QOS
- Czas (Time) typu danych Date.
ASDU-62 (C_SE_TB_1) = Set-point command with time tag CP56, value with measure:
- Wartość (Value) typu danych 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) typu danych Date.
ASDU-63 (C_SE_TC_1) = Set-point command with time tag CP56, short floating point number :
- Wartość (Value) typu danych Single i można zastosować cały zakres.
- Kwalifikator (Qualif) typu QOS
- Czas (Time) typu danych Date.
ASDU-64 (C_BO_TA_1) = Bitstring of 32 bit with time tag CP56:
- Wartość (Value) typu danych Long przedstawia binarną informację 32 bitów o stanie (poszczególne bity można z kolei odczytać na przykład przy pomocy właściwości Bit).
- Kwalifikator (Qualif) nie jest stosowany.
- Czas (Time) typu danych 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) typu danych 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) typu danych 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 danych 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 danych 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 danych 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 danych 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 danych 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 danych Byte. Ten kwalifikator jest zawarty w ASDU-(48-50), ASDU-(61-63).
0 = domyślne
>0 = zarezerwowane
Ponadto jeżeli 8.bit=0=vykonanie, 1=opcja(przygotowanie)
- QOI: Jest typu danych 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 danych 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 PmCommData (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 PmCommData (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".
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice