STER stu


Wprowadzenie w połowie lat sześćdziesiątych pierwszych central telefonicznych wyposażonych w sterowanie programowe SPC (Stored Program Control) spowodowało jednocześnie wzrost zainteresowania nowymi narzędziami projektowymi.

Podstawowe elementy charakteryzujące współczesne systemy komutacyjne. Są to przede wszystkim:

długowieczność - od urządzeń i systemów komutacyjnych oczekuje się technicznej sprawności i zdolności do pracy przez co najmniej 20 lat. Powodem są oczywiście olbrzymie koszty realizacji tak rozległych struktur oraz stosunkowo długi czas akumulacji. Działające w różnych punktach sieci systemy mogą pochodzić od różnych dostawców i reprezentować różne etapy rozwoju technologicznego. Wymagane jest więc takie ich zaprojektowanie by możliwa była współpraca tych systemów a także rozwój nadążający za wzrostem oczekiwań użytkowników, zapobiegający jednocześnie konieczności wymiany danego elementu sieci;

praca w czasie rzeczywistym - systemy komutacyjne określane są jako systemu czasu rzeczywistego. Wyniki przetwarzania dostarczanych danych zależą tu nie tylko wartości tych danych ale i od chwili ich dostarczenia. Poprawne działanie systemu jest więc uwarunkowane od czasowo, a interpretacja rezultatów przetwarzania uzależniona jest od momentu ich uzyskania.

wielodostęp - z usług systemu komutacyjnego korzysta, zazwyczaj jednocześnie i w sposób niezależny, wielu użytkowników. Ze względów ekonomicznych dostęp do usług systemu jest uzyskiwany na drodze rywalizacji;

modularność i rozproszenie - modularność jest cechą systemu polegającą na istnieniu wyraźnie wyodrębnionych i autonomicznych części systemu tzw. modułów. Każdy z modułów realizuje ściśle określony zbiór funkcji , kontaktując się z resztą systemu za pomocą dokładnie zdefiniowanych styków (interfejsów).

Początkowo, prace prowadzone przez CCITT skupiały się na wyspecyfikowaniu jednego języka wysokiego poziomu, zorientowanego na funkcje telefoniczne, który zapewniałby realizację wszystkich powyższych cech.

Duża złożoność funkcji realizowanych przez centrale i związane z tym znaczne nakłady na ich programowanie, doprowadziły w reszcie w latach 1968*1980 do opracowania przez CCITT rodziny trzech języków (rys.1) o różnym przeznaczeniu:

0x01 graphic

Rys.1. Rodzina języków CCITT/ITU-T

Wzajemne relacje między tymi językami pokazuje rys. 2.

0x01 graphic

Rys.2. Języki CCITT dla systemów SPC

  1. Organizacja sterowania central telefonicznych

Funkcja sterowania była jedną z pierwszych funkcji centrali w której zastosowano podział czasowy. Już we wczesnych systemach krzyżowych sterowanych za pomocą cechowników występuje scentralizowane sterowanie wykorzystujące podział czasowy. Mimo, że historycznie rzecz traktując zauważamy dążenie do coraz większej centralizacji sterowania w centralach telefonicznych, jednak najnowsze tendencje są skierowane ku całkowitemu rozproszeniu programowych funkcji sterowania.

    1. Zespoły sterujące central

W każdej centrali telefonicznej można wyróżnić następujące zespoły funkcjonalne:

Zespół sterujący komunikując się z wyżej wymienionymi zespołami funkcjonalnymi realizuje różne funkcje, które można podzielić na następujące grupy:

W nowoczesnych centralach telefonicznych sterowanie jest znacznym stopniu powiązane z elementami sieci dróg rozmównych, jednak funkcjonalnie zawsze można wyodrębnić następujące elementy sterowania (rys.3.):

- procesor,

- pamięć programu,

- pamięć przeliczeń,

- pamięć stanu systemu.

Procesory w systemie sterowania centrali podejmuje wszystkie funkcje decyzyjne i możemy powiedzieć, że ich zadaniem jest przetwarzanie sygnalizacji oraz sterowanie wszystkimi elementami SDR.

0x01 graphic

Rys.3 Idea sterowania programowego

Procesory w systemie sterowania centrali podejmuje wszystkie funkcje decyzyjne i możemy powiedzieć, że ich zadaniem jest przetwarzanie sygnalizacji oraz sterowanie wszystkimi elementami SDR.

Procesor działa na podstawie programu zapisanego w pamięci programu. W czasie inicjalizacji systemu program jest ładowany z pamięci masowej (np. ze stacji dysków) do pamięci RAM.

W pamięci przeliczeń zapisane są wszystkie dane półstałe, a więc takie dane jak:

kategorie abonentów,

kategorie łączy międzycentralowych i międzymiastowych,

przyporządkowanie numerów katalogowych numerom fizycznym,

przyporządkowanie wskaźnikom numeracji numerów wiązek międzycentralowych,

dane związane z niektórymi usługami np. wybieranie skrócone, przenoszenie wywołań, zamawiane rozmów itp.

Pamięci stanu muszą umożliwiać zapis wszystkich danych związanych z sieci dróg rozmównych, oraz ze stanem poszczególnych abonentów i łączy międzycentralowych.

    1. Rodzaje sterowania

Wybór architektury urządzeń sterujących jest wynikiem kompromisu między kosztem sprzętu i oprogramowania a wymaganiami wynikającymi z niezawodnej pracy w czasie rzeczywistym. W sterowaniu central rozważane są trzy typy sterowania:

Sterowanie scentralizowane. Całość centrali jest sterowana przez jeden procesor centralny uczestniczący w każdej fazie zgłoszenia. Procesor centralny może się składać z wielu części np. kilka procesorów w wieloprocesorowym zespole sterującym. Zgłoszenie jest obsługiwane przez ten sam procesor wiele razy. Rozwiązanie takie charakteryzuje się następującymi wadami:

skomplikowanie budowy centralnego procesora (ze względu na wymagania niezawodnościowe),

bardzo złożone oprogramowanie,

trudności ze spełnieniem wymagań pracy w czasie rzeczywistym,

przy instalowaniu centrali o minimalnej pojemności należy w niej umieścić procesor centralny mogący obsłużyć centralę o pojemności, która może być osiągnięta za jakiś czas,

cena sprzętu nie jest związana z obciążeniem ruchowym pola komutacyjnego.

Sterowanie zdecentralizowane. Jest to odmiana sterowania scentralizowanego polegającego na hierarchicznej strukturze współpracy między procesorami. W tym przypadku mamy do czynienia z przeniesieniem niektórych funkcji realizowanych przez procesor centralny do procesorów zewnętrznych. Dotyczy to głównie następujących funkcji:

prostych funkcji używanych przez cały czas pracy centrali, np. przeglądanie linii abonenckich,

prostych zadań powodujących uzależnienie oprogramowania od aktualnie istniejącego sprzętu centrali, np. funkcje głosowe centrali,

zadań, których zakres ulega zmianom w czasie pracy centrali, np. udogodnień dla abonentów,

prostych zadań utrzymaniowych, np. testowania pętli abonenckich,

Procesory podporządkowane mają na ogół strukturę modularną i ich liczba może być łatwo powiększana. Procesor centralny zarządza całością i z tego powodu ogranicza on wydajność ruchową centrali.

Sterowanie rozproszone. W takim rozwiązaniu poszczególne części centrali są sterowane przez odrębne urządzenia sterujące, nie ma procesora centralnego. Jeden typ zadania może być obsługiwany przez wiele procesorów. Procesory pełnią rolę urządzeń obsługowych rezerwowanych do obsługi zgłoszeń przez urządzenia peryferyjne lub zespoły abonenckie.

Pojęcie rozproszenia i zdecentralizowania nie jest ściśle precyzyjne. O istotnych cechach sterowania nie decyduje fizyczne rozproszenie procesorów, lecz rozproszenie funkcji logicznych, tzn. rozproszenie obsługiwanego ruchu lub rozproszenie funkcji obsługi zgłoszeń. W strukturze wieloprocesorowej z podziałem ruchu wyróżnić trzeba dwa rodzaje rozproszenia - podział źródeł ruchu oraz podział obciążenia zadaniami obsługi ruchu.

    1. Niezawodność sterowania

W teorii niezawodności systemów wielokomputerowych klasyfikuje się cztery rodzaje redundancji:

  1. systemy z głosowaniem,

  2. systemy z zimna rezerwa,

  3. systemy z gorącą rezerwą (hybrydowe),

  4. systemy ze stopniową degradacja.

W systemach typu a), wszystkie zespoły wykonują te same operacje; przez porównanie wyników i głosowanie eliminuje się zespoły uszkodzone. Najprostszym systemem jest układ dwuprocesorowy synchroniczny. W grupie b) rezerwowy zespól zastępuje zespół główny po detekcji błędu z pewna strata w okresie przejściowym W układach hybrydowych c) zakłada się brak straty w okresie przełączania Systemy typu d) są wielomaszynowymi zespołami z podziałem obciążenia; każdy z nich może wykonywać te same funkcje. Wykrycie błędu eliminuje uszkodzony zespól, degradując zdolność przetwarzania systemu.

    1. Komunikacja międzykomputerowa

Wśród rozmaitych układów pracy wielokomputerowej w sterowaniu central można wyróżnić dwie grupy:

W systemach wielomaszynowych, spotykanych w centralach SPC, wydzielić można trzy metody wzajemnego dostępu procesorów:

  1. kanały bezpośrednie,

  2. komutator międzyprocesorowy,

  3. kanał z podziałem czasu.

    1. Sterowanie centralą w warunkach przeciążenia

Zespoły central elektronicznych projektowane są na średni ruch w godzinie największego ruchu GNR. Przy omawianiu zadań dotyczących obsługi zgłoszeń widać było, że nawet tak pozornie proste kryterium jak ruch średni jest trudne do sprecyzowania. Z przypadkowej natury zgłoszeń wynika, ze przeciążenia w systemie są możliwe a czasami nieuniknione.

W systemach masowej obsługi wraz ze wzrostem ruchu oferowanego rosną straty ruchu i opóźnienia Systemy telefoniczne są systemami ze stratami (rys.8); ruch przenoszony jest mniejszy niż oferowany.

0x01 graphic

Rys.8. Charakterystyki ruchowe centrali przy przeciążeniach

Przy idealnej charakterystyce ruchowej centrali (rys.8), ruch przenoszony powinien asymptotycznie rosnąć do granicy projektowej i nie maleć przy zwiększeniu ruchu oferowanego.

Ruch obsłużony przez centrale rośnie wraz ze wzrostem ruchu oferowanego w zakresie obciążeń normalnych jak również przy pewnym przekroczeniu ruchu normalnego. Istnieje jednak taka graniczna wartość ruchu oferowanego, powyżej której ruch obsłużony przestaje wzrastać przy wzroście ruchu oferowanego. Ten stan centrali nazywa się natłokiem (ang. congestion).

Jako przykład można podać sposoby przeciwdziałania przeciążeniom w systemie S 12 o rozproszonym sterowaniu, potencjalnie mniej czułym na natłok. Zastosowane mechanizmy maja chronić przed:

Strategia ogólna polega na wprowadzeniu mechanizmów detekcji w każdym procesorze. W szczególności wyróżnić można trzy typy procesorów:

Podstawowym estymatorem przeciążenia w procesorze jest długość kolejki wiadomości oczekujących na obsługę (w systemie S 12 komunikacja między procesorami odbywa się na poziomie wiadomości). Stan przeciążenia jest wyznaczony przez porównanie długości kolejki z dwoma progami T1 i T2 (rys.9) zmienianymi dynamicznie tak, aby uzyskać obciążenie procesora bliskie docelowemu dla danej sytuacji ruchowej..

0x01 graphic

Rys.9. Detekcja przeciążenia w procesorach systemu S 12

    1. Ogólna koncepcja oprogramowania

Wszystkie występujące w tym punkcie pamięci należą do pamięci stanu. W opisie oprogramowania stosuje się następujące określenia:

Programowa obsługa procesu jest to wykonanie sekwencji akcji o czasie trwania od kilku do kilkunastu μs. W czasie przerw pomiędzy poszczególnymi akcjami, wykonywanymi na rzecz jednego procesu, trwających od kilkudziesięciu ms do kilku minut, proces wykonuje akcje na rzecz innych procesów.

Proces są to zmienne w czasie skojarzenia zasobów sprzętowych i programowych, mających dla użytkownika sens funkcjonalny.

Pamięć akcji jest to pamięć przeznaczona do przechowywania danych, istotnych jedynie w czasie akcji: po wykorzystaniu tych danych, pamięć może być użyta do przechowania danych innej akcji.

Pamięć międzyakcyjna służy do przechowywania danych o akcji w czasie przerw pomiędzy akcjami wykonywanymi na rzecz procesu wtedy, gdy istnieje w ramach akcji potrzeba skorzystania z wyników poprzedniej akcji

Adresowanie logiczne elementów systemu - sposób przyporządkowania urządzeniom centrali adresów logicznych. Jest to najwygodniejszy z punktu widzenia przetwarzania wewnętrznego sposób adresowania.

Adresowanie fizyczne odpowiada numeracji elementów systemu wynikającej z okablowania mikrokomputera.

Zdarzenie jest wynikiem skojarzenia numeru stanu z numerem odebranego sygnału na podstawie odpowiedniej tablicy.

      1. Ogólna organizacja oprogramowania

Ogólną organizację oprogramowania przedstawiono na rys.8., na którym przyjęto następujące oznaczenia:

NCBIA - dostęp wejściowy do bufora nowych wywołań,

NCBOA - dostęp wyjściowy do bufora nowych wywołań,

EVBIA - dostęp wejściowy do bufora zdarzeń,

EVBOA - dostęp wyjściowy do bufora zdarzeń,

c) Programy wejściowe.

Zadaniem programów wejściowych jest tworzenie zdarzeń takich, jak "zgłoszenie się abonenta wywoływanego", "cyfra", "nowe wywołanie" itp.

Ustalony program wejściowy jest związany z jednolitą funkcjonalnie grupą zakończeń kanałów sygnalizacji skojarzonej. Wyróżniamy dwa programy wejściowe:

program nadzoru pętli abonenckich w AZL-ach,

program nadzoru stanów zakończeń sygnalizacyjnych w wyposażeniach linii zewnętrznych (WL).


0x01 graphic


Programy wejściowe mają dostęp do swoich pamięci tworzenia zdarzeń, do bufora pustych elementów buforowych, bufora zdarzeń i bufora nowych wywołań.

Wydzielenie bufora nowych wywołań ma na celu umożliwienie wstrzymania przyjmowania do obsługi nowych wywołań w razie przeciążenia systemu.

d) Programy taktowania

Programy taktowania są to programy, które generują zlecenia wykonawcze, powodujące taktowanie określonych sygnałów, np. sygnały tonowe. Dodatkowo programy taktowania wykonują funkcje odmierzania czasów ochronnych na rzecz procesów pozostających w stanach wymagających takiego odmierzania.

e) Programy wyjściowe

Programy wyjściowe wykonują funkcje wykonawcze w odniesieniu do elementów wolnych (elektromechanicznych) lub wymagających rozciągnięcia akcji wykonawczej w czasie.

f) Programy inicjalizacji/wstrzymywania

Wydawanie zleceń programom wejściowym i programom taktowania następuje za pośrednictwem programów inicjalizacji/wstrzymywania, wywoływanych na zasadzie zwykłych podprogramów..

g) Bufory

Wszystkie bufory są listami jednokierunkowymi FIFO o elementach wziętych z bufora elementów pustych FPB. Organizację pojedynczego bufora przedstawiono na rys.14.

h) Program obsługi zdarzeń

Programy obsługi zdarzeń mają za zadanie realizować reakcje systemu na konkretny sygnał przyjmowany od abonentów lub linii zewnętrznych. Dla przykładu rozważmy program obsługi zdarzenia polegającego na tym, że do procesu abonenta, będącego w stanie spoczynku, przyszedł sygnał wywołania od procesu innego abonenta. Zadaniem tego programu jest przeprowadzenie przejścia procesu ze stanu spoczynku np. oznaczonego numerem 0 do stanu wywołania abonenta B np. oznaczonego numerem 1. Następnie zapisuje bit SA do pamięci programu przepatrywania, aby podniesienie mikrotelefonu przez abonenta wywoływanego było zinterpretowane jako odpowiedź na wywołanie, a nie jako nowe zgłoszenie. Ponadto program zapisuje do rejestru komutacyjnego abonenta wywoływanego numer stanu (1) oraz numer abonenta wywołującego. Szkic schematu blokowego tego programu przedstawiono na rys.15.

i) System operacyjny

System operacyjny sterownika centrali składa się z cyklu: monitorów obsługi zdarzeń, programu obsługi nowych wywołań oraz włączanego przez przerwania zegarowe (co 8 ms), monitora przerwań zegarowych. Organizację systemu operacyjnego zilustrowano na rys.16.

0x01 graphic

Rys.16. Organizacja systemu operacyjnego

W program monitora poziomu zegarowego włączono programy tworzenia zadań, a więc podprogramy:

przepatrywania AZL,

przepatrywania WL,

programy odmierzania czasów ochronnych.

Monitor obsługi zdarzeń pobiera pierwszy element bufora zdarzeń zawierający wszystkie dane o zdarzeniu:

kod zdarzenia,

typ linii,

numer logiczny linii,

numer logiczny i typ współpracującej linii.

Gdy monitor obsługi zdarzeń ma wszystkie dane, pobiera z odpowiedniego rejestru komutacyjnego numer stanu, w którym znajduje się obsługiwany proces. Na podstawie numeru kodu zdarzenia i numeru stanu w pamięci kojarzenia sygnałów w stanach z programami obsługi zdarzeń PKS zostaje odnaleziony numer programu obsługi zdarzenia, odpowiedzialny za ciąg akcji między określonymi stanami. Po przetworzeniu tego programu zostaje usunięty pierwszy (obsłużony) element bufora zdarzeń i monitor obsługi zdarzeń pobiera następne dane aż do opróżnienia bufora lub przerwania zegarowego. Po obsłużeniu wszystkich elementów bufora zdarzeń następuje przetworzenie programu obsługi nowych wywołań. Takie uszeregowanie programów zapobiega skutkom przeciążenia.

j) Centralne struktury danych

Struktury danych, do których ma dostęp większość programów, są następujące:

rejestry komutacyjne abonentów RKA,

rejestry komutacyjne linii zewnętrznych RKLZ ,

pamięć przeniesień PPR,

pamięć rozmowy konferencyjnej.

Rejestry komutacyjne służą do przechowywania wszystkich danych o aktualnym stanie procesów abonentów w przypadku rejestrów RKA oraz procesów linii zewnętrznych w przypadku rejestrów RKLZ, niezbędnych do ich obsługi.

Pamięć przeniesień odwzorowuje czasowe przyporządkowanie numerów logicznych abonentów. W pamięci rozmowy konferencyjnej są zapisane numery logiczne uczestników konferencji.

  1. Diagramy stanów SDL

SDL ma służyć do jednoznacznej specyfikacji wymaganych zachowań się systemu oraz opisu rzeczywistego zachowania się zrealizowanego systemu. Celem jaki postawiło sobie CCITT przy opracowywaniu języka SDL było uzyskanie języka przystosowanego do stosowania w "środowisku telekomunikacyjnym".

CCITT na początku prac nad językiem specyfikacji i opisu określiło podstawowe cechy takiego języka. I tak SDL powinien:

a) być łatwy do nauczenia się, stosowania i interpretacji,

b) zapewniać jednoznaczność specyfikacji załączonej do zamówień i ofert,

c) umożliwić dalsze jego rozwijanie,

d) umożliwiać stosowanie go przy różnych metodologiach specyfikacji i projektowania; nie zakładając żadnej z nich.

Specyfikacja czy opis w SDL może obejmować całość systemu lub tylko pewne aspekty jego działania, a w szczególności:

Zakres określenia wymagań na system czy własności systemu przy pomocy SDL nie jest niestety pełny. Specyfikację i opis w SDL trzeba uzupełniać w zależności od potrzeb:

Stosowanie SDL może objąć oczywiście inne niż telekomunikacja dziedziny zastosowań współpracy elektroniki. Język specyfikacji może być przydatny wszędzie tam, gdzie system jest zagnieżdżony w swoim otoczeniu i wykonuje funkcje na rzecz otoczenia, komunikując się z nim za pomocą sygnałów dyskretnych przenoszących informacje.

Przy definiowaniu języka opartego na modelu semantycznym możliwe jest zastosowanie dwóch podejść:

a) W pierwszym podejściu podstawą jest model semantyczny. Dekompozycja modelu i wypreparowanie elementów semantycznych, prowadzi do definicji syntaktyki. Ujęcie to zapewnia spójność syntaktyki z koncepcją modelu i odpowiada procesowi myślenia przy tworzeniu specyfikacji.

b) Drugie podejście prowadzi w kierunku odwrotnym, od definicji syntaktyki przez zasady kreacji do zasad interpretacji semantycznej języka. Jest to zgodne z odczytywaniem istniejącej już specyfikacji.

    1. Model semantyczny SDL

W modelu semantycznym SDL, system jest zbiorem bloków połączonych kanałami między sobą i z otoczeniem systemu. Zachowanie się bloku jest modelowane przez należące do niego procesy .Proces określany jest definicją procesu. Procesy współdziałają z innymi procesami i z otoczeniem za pomocą sygnałów.

0x01 graphic

Rys.20. Port procesu i droga sygnałowa

Całość drogi łączącej parę procesów i przenoszącej sygnały z procesu do procesu stanowi marszrutę sygnału (rys.21). Jeśli między każdą parą procesów sieci istnieje tylko jedna marszruta, to określana jest mianem kanału wirtualnego.

0x01 graphic

Rys.21. Kanał i marszruta sygnałów

Proces w trakcie swego cyklu życiowego znajduje, bądź znajduje się w stanie, oczekując na sygnał, bądź w przejściu wykonując sekwencję akcji (rys.22.). Gdy proces znajduje się w stanie, to może być w nim pobrany z portu sygnał oczekujący (utrzymywany w końcu kolejki portu). Jeśli jest to sygnał, który ma być zachowany, to pozostaje on w porcie i pobierany jest następny sygnał.

Jeśli jest to sygnał nie odpowiadający wyspecyfikowanemu w tym stanie wejściu czy symbolu zachowania, to zostanie on unicestwiony przez "wejście niejawne" związane z każdym stanem.

Jeśli jest to sygnał odpowiadający wyspecyfikowanemu wejściu, to zostanie on w nim przetworzony, dane zawarte w nim stają się dostępne dla procesu i rozpoczyna się wykonanie przejścia.

    1. Struktura logiczna

Specyfikacja (opis) na każdym etapie projektowania, wykonywana jest na wielu poziomach abstrakcji:

Pierwszy poziom: (najmniejsza szczegółowość, największa abstrakcja) definiuje strukturę sieci, określając bloki i łączące je kanały, z uwzględnieniem podziału bloków między system i otoczenie.

Drugi poziom: określa budowę bloków jako złożonych z definicji procesów i dróg sygnałowych łączących procesy bloku między sobą i z kanałami wychodzącymi i przychodzącymi do bloku.

Trzeci poziom: określa substruktury bloków i kanałów, tj. ich uszczegółowienia w postaci substruktur "podsystemów" złożonych z bloków i kanałów.

Czwarty poziom: zawiera definicje procesów złożone z deklaracji obiektów i definicji akcji (grafów procesów).

Piąty poziom: pozwala przedstawić proces jako sieć usług.

    1. Formy syntaktyki konkretnej

SDL posiada dwie równoważne semantyczne formy syntaktyki konkretnej:

tekstową - SDL/PR (ang .Phase Representation) - odpowiadającą klasycznej formie notacji programów, podporządkowana jest podstawowym możliwościom redagowania, zapewnionym przez klawiaturę alfanumeryczną i edytor tekstu.

graficzną - SDL/GR (ang Graphic Representation) - której zadaniem jest sugestywne wyeksponowanie schematu struktury sieci i komunikacji przez sygnały pomiędzy elementami tej struktury oraz schematu struktury sterowania w procesach i procedurach.

    1. Notacja graficzna

Diagramy SDL/GR występują w trzech wersjach (rys.26.):

1. Wersja zorientowana na przejście- Sekwencja przejścia opisywana jest wyłącznie przez wyraźne symbole akcji. Wersja ta jest odpowiednia, gdy sekwencja akcji jest ważniejsza niż szczegółowy opis stanów .

2. Wersja zorientowana na stan- Stan jest opisywany jednoznacznie przy wykorzystaniu elementów rysunkowych. Rysunek ten nazywany jest rysunkiem stanu. Sekwencja przejścia akcji jest definiowana przez różnicę między definicjami pre-stanu i post-stanu . Wersja ta jest odpowiednia, gdy pożądane jest rysunkowe wyjaśnienie stanu, a mało ważna jest sekwencja przejścia.

3. Wersja kombinowana- kładzie jednakowy nacisk na szczegółowy opis stanów jak i na sekwencję przejścia.

0x01 graphic

Rys.27.Wersje reprezentacji graficznej SDL/GR

0x01 graphic

Rys.28. Rodzaje symbolu stanu

0x01 graphic

Rys.29. Symbole występujące w diagramach SDL na poziomie bloków

0x01 graphic

Rys.30. Symbole występujące w diagramach SDL na poziomie procesu

Na rysunek stanu składają się elementy rysunkowe, reprezentujące różne obiekty Do standardowych elementów rysunkowych należą (rys.32.):

granica bloków funkcjonalnych,

wyposażenie abonenckie,

odbiornik sygnalizacji,

nadajnik sygnalizacji,

łączony nadajnik/odbiornik sygnalizacji,

zegar nadzorujący,

droga połączeniowa (zestawiona, zarezerwowana),

moduł komutacyjny (stopień pola komutacyjnego),

start zaliczania,

elementy sterujące,

symbol niepewności.

0x01 graphic

Rys.32. Standardowe elementy rysunkowe

    1. Tworzenie diagramów SDL

W pierwszym etapie tworzenia diagramów SDL należy stworzyć założenia w których należy uwzględnić:

1) strukturę systemu na poziomie bloków funkcjonalnych;

2) reprezentację bloków funkcjonalnych przez stworzenie jednego lub więcej procesów w ramach jednego bloku;

3) specyfikację sygnałów wejściowych i wyjściowych dla wszystkich procesów;

4) dane używane wewnątrz procesów.

Wszystkie wymienione czynniki mają wpływ na określenie liczby stanów w opisywanym procesie. Konsekwencją określenia sygnałów wejściowych jest liczba stanów w każdym procesie, przez co i w całym diagramie SDL.

Proces. Proces jest rozszerzonym automatem skończonym, który definiuje dynamiczne zachowanie się systemu. Proces znajduje się zazwyczaj w stanie oczekiwania na sygnał. Gdy sygnał jest odebrany, proces reaguje wykonaniem określonej akcji, która jest zdefiniowana dla każdego typu sygnału, który może zostać odebrany w danym procesie. Proces zawiera więc wiele różnych stanów, żeby umożliwić procesowi wykonanie różnych akcji po odebraniu sygnału. Po wykonaniu wszystkich akcji związanych z odbiorem określonego sygnału, proces przechodzi do nowego stanu i oczekuje na następny sygnał.

Stan. Stan jest to punkt w procesie, gdzie nie są wykonywane żadne akcje, ale gdzie wejściowa kolejka sygnałów jest monitorowana dla nadchodzących sygnałów wejściowych. Bazując na identyfikatorach sygnałów zawartych w sygnałach wejściowych, przychodzący sygnał staje się przyczyną wyjścia procesu z aktualnego stanu wykonania sekwencji akcji i przejścia do nowego stanu.

  1. Język CHILL

    1. Języki wysokiego poziomu w zastosowaniach telekomunikacyjnych

Pierwsza propozycja języka nazywanego CHILL (CCITT High Level Language) przedstawiona została w roku 1976. Po trwających trzy lata testach język wzbogacono o nowe elementy (między innymi kompilację cząstkową, dynamiczna gospodarkę pamięcią czy obsługę we/wy) i zatwierdzono w 1980r. jako zalecenie Z.200. Dodatkowo wydane zostały dwie inne publikacje, z których jedna zawiera przewodnik będący prostym wstępem do CHILL-a, a druga podaje jego opis w postaci formalnej notacji matematycznej. Obecnie prowadzone są prace nad opisem języka zorientowanym na użytkownika.

Na końcowy kształt CHILL-a najbardziej wpłynęły takie języki jak: PL/I, Pascal i Modula-2. Sam CHILL jest językiem tej samej klasy i o podobnych właściwościach co Ada czy wspominana wcześniej Modula-2. Konstrukcje wykorzystywane w tych językach posiadają niemal identyczną konstrukcję znaczeniową różniąc się jedynie formą zapisu. Zwłaszcza część sekwencyjna CHILL-a jest oparta o struktury stosowane w Pascalu. Mimo podobieństw i analogicznie zorganizowanych mechanizmów dekompozycji programu na moduły rozbudowane zostały sposoby definiowania zależności pomiędzy modułami. Podstawowe różnice między omawianymi językami leżą jednak w programowaniu współbieżnym. CHILL oferuje najwięcej metod współpracy procesów (sygnały, zdarzenia, bufory, regiony) stwarzając możliwość doboru mechanizmów interakcji do konkretnych sytuacji

    1. Struktura języka

Program napisany w języku CHILL składa się z trzech warstw logicznych:

opis akcji, które mają być wykonywane

opis danych , na których mają działać akcje

opis struktury programu

Jednostkami tekstowymi, z których zbudowany jest program są instrukcje (statements). Akcje opisane zostały przez instrukcje czynne (action statements), dane przez instrukcje bierne (data statements) natomiast struktura programu przez instrukcje strukturalizujące (program structuring statements). Zadaniem akcji jest definiowanie operacji jakie mają być wykonywane na danych oraz kolejności w jakiej te operacje mogą być wykonywane. Struktura programu określa czas życia zmiennych (data objects) oraz "widoczność" nazw. Pojęcia te definiowane są w sposób następujący:

czas życia zmiennych rozciąga się od chwili ich wykreowania do momentu usunięcia z pamięci przy czym zmienna może zostać zadeklarowana wprost lub pośrednio jako wynik wykonania innej instrukcji;

nazwa jest widoczna w pewnym miejscu programu jeśli może zostać w tym miejscu użyta. Zasięg nazwy jest zbiorem miejsc programu, w którym jest ona widoczna.

    1. Struktura programu

Działający program, który został napisany w CHILLu stanowi w sensie dynamicznym zbiór komunikujących się procesów. Z punktu widzenia statycznego jest to jednak zespół modułów i regionów. Oprócz tych trzech elementów, jednostkami, które dopełniają opisu struktury programu są procedury i bloki podstawowe. Bloki, procedury i procesy ograniczają zarówno widoczność , jak i czas życia obiektów danych - mamy wówczas do czynienia ze zmiennymi lokalnymi..

Podobnie jak w przypadku innych języków, jednym z podstawowych elementów CHILLa są procedury czyli podprogramy, które mogą być wywoływane z różnych miejsc programu głównego. Jest dozwolone przekazywanie argumentów i rezultatów procedury zarówno przez wartość jak i przez adres. W ramach procedur możliwe jest również określenie pożądanej metody ich implementacji : od makrogeneracji aż po rekursję.

Ważną cechą języka CHILL jest obsługa współbieżności. Środkami kontroli tego zagadnienia są procesy i regiony. Proces - sposób przetwarzania, w którym w zbiorze operacji kolejna operacja może rozpocząć się dopiero po zakończeniu poprzedniej, stanowi jednostkę wykonania współbieżnego. Na poziomie logicznym programu proces znajduje się zawsze w jednym z dwu stanów: aktywnym (active) lub wstrzymanym (delayed). Przejścia pomiędzy tymi stanami powodowane są przez różne akcje programu. Cykl życia procesu przedstawia rys. 33.

0x01 graphic

Rys.33. Cykl życia procesu

Zazwyczaj procesy realizujące wspólnie pewne zadania muszą się komunikować między sobą w celu wymiany informacji. Współpraca procesów musi być odpowiednio zorganizowana, język CHILL przewiduje trzy mechanizmy koordynacji procesów, różniące się przede wszystkim stopniem jawności szczegółowości kontroli komunikacji dostępnej dla programisty:

synchronizacja - wstrzymanie procesu w oczekiwaniu na osiągnięcie pewnego stanu przez inny proces;

komunikacja - polega na wymianie wiadomości przekazujących dane między procesami. Komunikacja pociąga za sobą synchronizację;

wzajemne wykluczanie - jest stosowane w celu bezpiecznego tj. nie grożącego blokadą współużytkowania wspólnych zasobów. Mechanizm ten również implikuje synchronizację

Mechanizmami przekazywania informacji między procesami są zdarzenia, bufory i sygnały.

Drugi z elementów obsługi współbieżności, region jest odmianą modułu. Jego zadaniem jest kontrola dostępu procesów do lokalnych zasobów w drodze wzajemnego wykluczania. Regiony nazywane są także monitorami.

      1. Dane

Danymi w CHILLu są wartości, oraz zmienne służące do przechowywania tych wartości. Oznaczeniami zmiennych są nazwy, a z każdą zmienną związany jest jej typ określający zbiór dopuszczalnych wartości oraz inne cechy:

rozmiar

wewnętrzną strukturę

dostępność dla zapisu

możliwość odwoływania się do adresu zmiennej

statyczność typu ( możliwość statycznego zdeterminowania typu)

statyczność alokacji w pamięci

Z każdą wartością związana jest jej klasa, określająca zbiór typów tych zmiennych, które mogą przyjmować rozpatrywaną wartość. CHILL wykorzystuje następujące kategorie typów:

dyskretne : całkowite, znakowe, logiczne oraz wyliczeniowe ( o wartościach definiowanych przez programistę), a ponadto typy;

mnogościowe: definiują wartości, które są zbiorami zawierającymi wartości typu dyskretnego, umożliwiają operacje teoriomnogościowe na zbiorach wartości dyskretnych

wskazujące : służą do operowania na wskazaniach (adresach, deskryptorach) zmiennych określonego typu statycznego albo dynamicznego;

złożone : definiują wartości posiadające dostępne elementy składowe. CHILL określa trzy rodzaje typów złożonych:

łańcuchowe;

tablicowe;

strukturowe

proceduralne : pozwalają na dynamiczne operowanie procedurami np.przekazywanie ich jako argumentów,przypisanie zmiennym. Operacje te mają na celu wywołanie danej procedury np. w innym miejscu programu.

identyfikujące : definiują wartości identyfikujące procesy. Każde wystąpienie procesu posiada unikalny identyfikator. Wartości identyfikujące procesy są wykorzystywane w akcji odbioru do określenia nadawcy sygnału, a w akcji nadania od określenia odbiorcy sygnału;

synchronizacyjne : są to typy związane ze współpracą między procesami. Język CHILL definiuje dwa typy synchronizacyjne:

zdarzenia, Zmienne typu zdarzeniowego stanowią środek bezpośredniego kontrolowania kolejności, w jakiej procesy korzystają ze wspólnych danych, w sytuacjach gdy nie jest wystarczająca konstrukcja regionu.

bufory, Obiekty typu buforowego i operacje na nich są używane jako środki komunikacji i synchronizacji procesów. Bufory w odróżnieniu od zdarzeń są trwałe;

transmisyjne : służą do obsługi wejścia/wyjścia programu.

      1. Akcje

Instrukcje czynne, opisujące akcje składają się na algorytmiczną część programu. Kontrola kolejności wykonywania akcji możliwa jest dzięki strukturalnym instrukcjom sterującym:

instrukcja warunkowa (if), rozgałęzienie programu na dwie ścieżki lub jej odmiana pozwalająca na wielokrotne rozgałęzienie bez kolejnych zagnieżdżeń instrukcji;

instrukcja wyboru (case), realizacja wielościeżkowego rozgałęzienia;

instrukcja pętli (do), realizacja iteracji z wygodnymi mechanizmami przeglądania tablic i zbiorów;

instrukcja zaniechania i skoku (exit, goto), umożliwia opuszczenia instrukcji złożonej bloku, pętli itd. ;

instrukcja powołania (start), pozwala na dynamiczne kreowanie nowych wcieleń procesów i inicjuje ich wykonanie;

instrukcja unicestwienia (stop), wykonana przez proces powoduje jego samounicestwienie;

instrukcja wstrzymania (delay), powoduje zawieszenie wykonywania procesu w oczekiwaniu na zajście innego wydarzenia;

instrukcja nadania komunikatu do bufora lub nadania sygnału (send, receive), umożliwia wymianę informacji między procesami.

O przydatności języka CHILL do zastosowań telekomunikacyjnych świadczy możliwość obsługi niepoprawnych skutków wykonywanych akcji czyli tzw. wyjątków. Wyjątek może stanowić np. wystąpienie nadmiaru arytmetycznego, wyczerpanie dostępnej pamięci, odwołanie do procesu, który nie istnieje, przekroczenie zadeklarowanych rozmiarów tablicy itd..Wydarzenia tego typu powodowane są przez określone warunki dynamiczne, które nie dają się wykryć. Oprócz tego , powstawanie wyjątku może być świadomie spowodowane przez spowodowanie tzw. akcji wymuszenia. Dzięki temu mechanizm wyjątków może służyć nie tylko do obsługi błędów, ale także do efektywnego oprogramowania wszystkich wyjątkowych stanów mogących pojawić się podczas działania programu.

Przechwytywanie i obsługa wyjątków realizowana jest w CHILLu przez specjalne konstrukcje nazywane handlerami.

    1. Środowisko języka

Przykładowe środowisko wykorzystywane do projektowania oprogramowania systemów komutacyjnych zawierać powinno dwa elementy podstawowe (rys.34.):

zbiór łatwych w użyciu narzędzi (edytory, kompilatory, system plikowy)

sposoby integracji tych narzędzi (język interakcji ze środowiskiem, bazy danych)

0x01 graphic

Rys. 34 Struktura przykładowego środowiska CHILL

Wymagania stawiane środowisku oprogramowania zakładają:

wspomaganie pełnego cyklu życia systemu: środowisko definiuje model cyklu życiowego oprogramowania oraz określa sposób opisu wymagań, wskazówki dotyczące projektowania, programowania, testowania i weryfikacji produktu finalnego.

układ system host - system docelowy: aż do fazy uruchamiania programu wszystkie operacje wykonywane są w oparciu o możliwości systemu host;

wspomaganie programowania w języku CHILL : środowisko powinno umożliwiać oddzielną kompilację fragmentów programów. Konieczność takich operacji wynika z faktu, że nad oprogramowaniem pracuje zazwyczaj wielu programistów.

wspomaganie formalnych metod specyfikacji: środowisko powinno umożliwiać przygotowanie sformalizowanej specyfikacji w notacji SDL w celu weryfikacji spójności programu oraz wspomagania przejścia od implementacji realizowanej w CHILLu

nadzór nad konfiguracją: rejestrowanie historii tworzenia elementów systemu, tak by możliwe było sporządzenie pełnej dokumentacji wersji i wariantów systemu;

otwartość i jednolitość: środowisko powinno pozwalać na łatwą rozbudowę o nowe narzędzia;

wspieranie pracy zespołowej: środowisko musi pełnić rolę systemu przechowywania , gromadzenia i wyszukiwania informacji (baza danych). Informacje są następnie udostępniane członkom zespołu projektowego;

przenośność :środowisko powinno być tak zaimplementowane, by niewielkim nakładem sił można je było uruchomić i eksploatować na innym systemie host.

  1. Język MML

Opracowany przez CCITT język MML (Man-Machine Language) jest specyfikacją interfejsu między człowiekiem a sterowanym programowo systemem komutacyjnym. W skład tego języka wchodzi obsługa komend wydawanych systemowi, odpowiedzi systemu oraz interakcji zachodzących między komendami i odpowiedziami w danym urządzeniu we/wy. MML definiuje procedury, które zapewniają bezpieczeństwo systemu oraz sposoby przesyłania komend i odpowiedzi między wieloma systemami.. Jednym z założeń języka była łatwość jego nauki i możliwość zaadaptowania do poziomu umiejętności typowego personelu odpowiedzialnego za zarządzanie i utrzymanie systemów komutacyjnych.

0x01 graphic
Rys.35. Zastosowanie języka MML

    1. Funkcje realizowane przez MML

Zamieszczona w zaleceniu Z.331 lista funkcji mimo, że zawiera około 100 pozycji nie jest traktowana jako kompletna. W zależności bowiem od położenia stanowiska zarządzania w strukturze sieci, implementacji podlega określony zespół funkcji.

Ogólnie zalecenie Z.331 grupuje funkcje w sposób następujący:

funkcje eksploatacyjne: służą do wykonywania zadań związanych z pełnym wykorzystaniem możliwości oferowanych przez nowoczesne systemy komutacyjne tj. zarządzanie abonentami, kierowanie i pomiary ruchu, taryfikacja, eksploatacja systemu sterowania i zarządzania siecią, śledzenie wywołań złośliwych itp;

funkcje utrzymaniowe: kontrola pracy centrali, wykrywanie błędów, rekonfiguracja, wykrywanie i lokalizacja uszkodzeń, utrzymanie linii, sieci i systemu sterowania ;

funkcje instalacji : obejmują zmiany konfiguracji oprogramowania i sprzętu poza granice ustalone arbitralnie przy budowie centrali;

funkcje testowe : służą do sprawdzania zgodności systemu ze specyfikacją (funkcje te określane są jako "inne" niż eksploatacyjne, utrzymaniowe czy instalacyjne).

    1. Syntaktyka

Warstwa składni języka MML opiera się o zestaw znaków alfabetu CCITT Nr5. Alfabet ten nie zawiera znaków semigraficznych, pozwalających tworzyć tabele, rysunki co zwiększyłoby czytelność wyjść. Wymóg adaptowalności do potrzeb lokalnych i narodowych został spełniony przez zarezerwowanie 10 pozycji na znaki alfabetów narodowych. Alfabet Nr5 definiuje dodatkowo zespół znaków sterujących (formatujących), które są odpowiednie do pracy z dalekopisem, ale nie pozwalają wykorzystać w pełni możliwości monitorów ekranowych. Brak znaków sterujących położeniem kursora na ekranie, atrybutów wyświetlanych znaków itp..

    1. Język wejściowy.

Na język wejściowy składają się:

 Rozkazy: rozkaz wprowadzony przez operatora posiada trzy części rozdzielone odpowiednimi separatorami:

 kod rozkazu

 blok lub bloki parametrów

 znak wykonania

Kod rozkazu określa funkcję zadaną systemowi do wykonania i składa się z 1,2 lub 3 identyfikatorów, rozdzielonych znakiem “-“. W przypadku niejednoznacznego zadania funkcji przez kod rozkazu, następuje po nim jeden lub więcej bloków parametrów. W każdym bloku wszystkie parametry muszą należeć do jednego z dwóch rodzajów:

 parametry określane przez pozycję;

 parametry określane przez nazwę.

Konkretna implementacja może określić jeden z tych rodzajów parametrów jako jedyny dostępny. Znakiem wykonania mogą być następujące znaki:

 ; - znak wykonania jednokrotnego

 ! - znak wykonania wielokrotnego

Znaki te określają akcję jaką system ma podjąć po zinterpretowaniu wprowadzonego rozkazu

 Parametry: każdy parametr formalnie składa się z identyfikatora (nazwy parametru), znaku “=” oddzielającego nazwę oraz wartości parametru. Parametry w bloku są oddzielane przecinkami.

 Wartość parametru: znaczeniowa wartość parametru sprowadza się do pewnej liczby prostych lub złożonych argumentów parametru. Argument prosty to jedna jednostka informacji podczas gdy argument złożony składa się z dwóch lub więcej jednostek informacji rozdzielonych znakiem “-“.

 Grupowanie argumentów: środkiem upraszczającym wprowadzanie rozkazów jest możliwość grupowania argumentów parametrów (zarówno złożonych jak i prostych). Zdefiniowane zostały dwa operatory grupowania:

 “&” gdzie A&B oznacza argument A i argument B

 “&&” czyli “od-do”, A&&B oznacza argumenty począwszy od A a skończywszy na B. Separator && dotyczy wyłącznie argumentów różniących się o 1.

W nowych zaleceniach CCITT wprowadzony nowy separator grupowania: "++". Umożliwia on podanie w sposób bezpośredni wartości inkrementacji np.

3&&9++2 oznacza argumenty : 3,5,7 i 9

Wszystkie możliwe kombinacje grupowania argumentów prostych i złożonych przedstawia rys.37.

0x01 graphic

Rys.37. Grupy argumentów parametru

    1. Język wyjściowy

W zaleceniach CCITT składnia języka wyjściowego odnosi się wyłącznie do wyjść poza dialogiem. Wszelkie wyjścia poza dialogiem , niezależnie od ich znaczenia opisywane są tym samym diagramem syntaktycznym (rys.38.).

0x01 graphic
Rys.38. Wyjście poza dialogiem

Elementami języka wyjściowego są:

 Nagłówek: występuje na początku zdania języka wyjściowego. Zawsze zawiera datę i czas. Ponadto może przenosić informacje o identyfikatorze źródła (pochodzeniu wyjścia) oraz tzw. Informacje dodatkowe;

 Stwierdzenie alarmu: podaje klasę alarmu (pilny, normalny itd.)

 Odniesienie do rozkazu: rozkazy wydawane systemowi są wewnętrznie numerowane;

 Identyfikacja wyjścia: pozwala ustalić rodzaj wyjścia w bogatym repertuarze wyjść systemu, a tym samym odszukać niezbędne informacje (sposób dalszego postępowania) w odpowiednim dokumencie.

    1. Zasady dialogu

Inicjowana przez człowieka procedura dialogu przedstawiona została na rys.39. Stanowi ona zamkniętą jednostkę , której zadaniem jest umożliwienie wprowadzenia rozkazu (rozkazów).

W skład procedury dialogu wchodzą następujące części składowe:

 Prolog procedury: jedynym, niezbędnym składnikiem prologu jest żądanie dialogu - manualna czynność mająca na celu zainicjowanie systemu komunikacji maszyny z człowiekiem. W prologu może być zawarta procedura identyfikacji operatora i nagłówek.

 Prolog przeznaczenia: pozwala podać tzw. identyfikator przeznaczenia, którego zadaniem jest skierowanie dalszych rozkazów do określonego obiektu fizycznego (procesora).

0x01 graphic
Rys.39.Procedura dialogu

 Epilog procedury: następuje na życzenie człowieka (koniec sesji) lub systemu (gdy zostanie przekroczony dopuszczalny czas oczekiwania na wprowadzenie kolejnego znaku) i ma na celu zwolnienie wykorzystywanych urządzeń dialogowych np. w celu umożliwienia wyprowadzenia komunikatu o niskim priorytecie, który nie ma prawa przerywać dialogu.

0x01 graphic

Rys.36. Interakcyjna sekwencja operacyjna

 Sterowanie wykonaniem rozkazu: skompletowany przy użyciu dowolnego elementu dialogu rozkaz można wprowadzić do systemu dwoma sposobami:

 zażądać wykonania rozkazu po którym ma nastąpić powrót systemu do stanu gotowości - znak wykonania jednokrotnego “;”

 zażądać wykonania rozkazu po którym system ma przejść od razu do fazy wprowadzania bloku parametrów, przyjmując, że jako następny będzie wprowadzany rozkaz o tym samym kodzie - znak wykonania z powtarzaniem

 Interakcyjna sekwencja operacyjna: sekwencja ta (rys.40.) opiera się na wprowadzaniu poszczególnych elementów rozkazu (kodu, bloku parametrów, znaku wykonania) bezpośrednio z klawiatury urządzenia konwersacyjnego. Odpowiedź na zgłoszone przez maszynę żądanie interakcji może przyjąć postać czynności manualnych wykonywanych przez operatora przy sprzęcie (np. wymiana pakietu).

Bibliografia

[1] Dąbrowski M., Sterowanie i oprogramowanie w telekomunikacyjnych sieciach zintegrowanych. WKi£ Warszawa 1990.

[2] Jajszczyk A., Podstawy komutacji kanałów, WNT Warszawa 1990.

[3] Zalecenia CCITT Z.101÷Z.104.

[4] Carrelli C., Roche D. J. CCITT Languages for SPC Switching Systems, IEEE Transactions on Communications, vol. com-30 No. 6 1982

[5] Rockström A., Saracco R. SDL-CCITT Specification and Description Language, IEEE Transactions on Communications, vol. com-30 No. 6 1982

[6] Rekdal K., CHILL-The Standard Language for Programming SPC Systems, IEEE Transactions on Communications, vol. com-30 No. 6 1982

[7] Hornbach B.H., MML: CCITT Man - Machine Language, IEEE Transactions on Communications, vol. com-30 No. 6 1982.

[8] Brzeziński M. K. :MML - wprowadzenie do języka CCITT, Przegląd Telekomunikacyjny, nr 9/1986.

[9] Jarociński M., Średniawa M., Wprowadzenie do języka CHILL, Wydawnistwa Komunikacji i £ączności Warszawa 1988.

[10] Średniawa M., Problemy przejścia od specyfikacji do implementacji: języki SDL i CHILL, materiały KST'89 Bydgoszcz.

[11] Jarociński M., Kimbler K., CHILLIT - Zintegrowane środowisko języka CHILL, materiały KST'89 Bydgoszcz

Sterowanie centrali elektronicznej

4

Sterowanie centrali elektronicznej

53



Wyszukiwarka

Podobne podstrony:
STER stu
RTT STU
Napęd i ster
3 kanał ster świateł dysko
FINANSE BEHAWIORALNE w1 stu
Teoria ster. 4, Politechnika Lubelska, Studia, semestr 5, Sem V, Nowy folder
AVT503 Zdalne ster rygla
4 vat stu id 37350 Nieznany (2)
Mokroprocesorowy moduł do ster piecem
wniosek o stypendium, ►Studia
Teoria ster. 8(1), Politechnika Lubelska, Studia, semestr 5, Sem V, Nowy folder
ster
STER prawa 3 2 2 1 modul ryzyko dodatki
Badanie 3 fazowych prostowników ster i półster
STER 3 3 5 7 2 czyn oswietnatez ocenryz
STER 3 3 3 0 czyn fizycz
STER 2 2 4 sesja usuwanie czynnika

więcej podobnych podstron