Symulacja modelu centrali
Symulator określony jest jako hybrydowy, ponieważ łączy symulację niezależnych obwodów liniowych,
bazującą na wykorzystaniu MNA, z obsługą dynamicznych zmian topologii, inicjowanych przez zdarzenia
powstające przy zwieraniu/rozwieraniu styków przekaźników. Styki przekaźników nie są
modelowane na poziomie MNA.
Wykrywanie węzłów zasilających
Wykrywanie odbywa się po nazwie (sil-plus, sil-minus, od: siłownia-plus / siłownia-minus).
Wykryte wezły mają ustawianą flagę RAIL_PLUS lub RAIL_MINUS.
Dystrybucja zasilania
Po odnalezieniu głównych węzłów zasilających następuje "rozpropagowanie" flagi RAIL_MINUS
na wszystkie węzły, które są elektrycznie połączone z sil-minus, poprzez bezpieczniki
wszystkich poziomów (główny, rzędowy, stojakowy oraz danego obwodu na poziomie ZA).
Technicznie jest to realizowane z użyciem BFS od węzła RAIL_MINUS, przez krawędzie, które
są bezpiecznikami, do węzłów, od których rozpoczynają się właściwe obwody.
Rozpropagowanie RAIL_PLUS nie jest konieczne, ponieważ jest to w modelu dokładnie jeden węzeł,
wspólny dla wszystkich obwodów.
Identyfikacja podobwodów (ang. subcircuits)
Lista węzłów efektywnych przeszukiwana jest liniowo. Utrzymywana jest globalna lista węzłów odwiedzonych, która jest wspólna dla etapu dystrybucji zasilania oraz dla etapu wstępnej identyfikacji podobwodów.
W pętli brane są z listy wyłacznie węzły, które nie były jeszcze odwiedzone na żadnym z wzmiankowanych etapów.
Taki węzeł traktowany jest jako punkt wejścia do nowego podobwodu.
Dla każdego wziętego węzła uruchamiany jest BFS, przy czym ogranicznikami dla niego
są węzły z flagą RAIL_MINUS oraz RAIL_PLUS.
Efektem działania BFS jest jego przejście przez węzły i krawędzie grafu efektywnego. W wyniku tego
przejścia tworzony jest obiekt SubCircuit, który zawiera listę zaangażowanych w podobwód węzłów oraz krawędzi.
Odwiedzone węzły dodawane są do w/w listy węzłów odwiedzonych, co zapobiega ponownym próbom ich przeszukiwania
w tym procesie.
Krawędzie (EffectiveEdge) po których odbywa się BFS, to z punktu widzenia modelu efektywnego pary:
from(EffectiveNode, EffectiveTerminal) <→ to(EffectiveNode, EffectiveTerminal).
Odnalezione podobwody otrzymują swoje unikalne ID i przechowywane są w repozytorium podobwodów
(SubCircuitRepo). SubCircuitRepo zajmuje się zarządzaniem obiektami podobwodów
(tworzenie nowych podobwodów, usuwanie istniejących podobwodów, wyszukiwanie podobwodu dla zadanego węzła efektywnego,
pilnowanie unikalności ID nadawanego nowym podobwodom).
Przed utworzeniem docelowych obiektów podobwodów przeprowadzane jest uproszczenie topologii polegające na usuwaniu gałęzi, które wchodzą w skład zidentyfikowanych obwodów, ale które aktualnie "wiszą w powietrzu" i przez które, w konsekwencji, nie płynie żaden prąd (ang. leaf pruning)
W dalszej kolejności następuje "spłaszczenie" podobwodu, na które składają się dwa etapy:
-
logiczne łaczenie ze sobą węzłów, pomiędzy którymi występują zwarte styki - wykonywane na poziomie struktury
DSU, której instancja jest przechowywana w każdym podobwodzie, -
przeindeksowanie zredukowanych węzłów na potrzeby budowania macierzy
MNA(ang. MNA matrix stamping) (numeracja od zera, kolejnymi liczbami całkowitymi, oznaczającymi numer wiersza/kolumny macierzy).
Reakcja na zmiany w topologii
Zmiany w topologii mogą być wynikiem zwarcia lub rozwarcia styku.
Rozwarcie styku
Uprzednio zwarty styk, znajdujący się pomiędzy węzłami A i B zostaje w wyniku symulacji rozwarty.
Do kolejki zdarzeń trafia odpowiednie zdarzenie informujące o tym.
W wyniku rozwarcia styku istniejący węzeł w podobwodzie zostaje podzielony na dwa. W zależności od tego, czy istnieją inne (równoległe) połączenia rozwartych węzłów pozostaje pojedynczy podobwód, lub jeśli takie równoległe połączenie nie istnieje, to dotychczas istniejący pojedynczy podobwód dzielony jest na dwa niezależne.
Procedura obsługi rozwarcia styku jest nastęująca (ang. Invalidate & Re-run):
-
znalezienie podobwodu dla węzła
Ai usunięcie go z repozytorium podobwodów. -
uruchomienie
BFSod węzłaAi utorzenie pierwszego nowego podobwodu. -
jeśli w trakcie
BFSod węzłaAzostanie odnaleziony węzełB, to oznacza to, że istnieje nadal krawędź równoległa, która łączy węzłyAiB, co oznacza dalej, że węzły te pozostają w ramach jednego podobwodu. -
jeżeli węzeł
Bnie zostanie odnalezionoy podczasBFSdla węzłaA, to uruchamiany jest dodatkowoBFSdla węzłaB; efektem pracy tegoBFSjest utworzenie drugiego nowego podobwodu.
W konsekwencji, w wyniku rozwarcia styku stary podobwód jest usuwany, a w zamian tworzony jest jeden, lub dwa nowe podobwody.
Po obsłużeniu zmian w topologii, nowoutworzone podobwody są "spłaszczane", wg zasady opisanej wyżej.
Zwarcie styku
Uprzednio rozwarty styk, znajdujący się pomiędzy węzłami A i B zostaje w wyniku symulacji zwarty.
Do kolejki zdarzeń trafia odpowiednie zdarzenie informujące o zwarciu styku.
W wyniku zwarcia styku tworzone jest połaczenie dwóch węzłów w ramach jednego podobwodu lub dwa niezależne dotąd podobwody stają się jednym wspólnym podobwodem.
Procedura obsługi zwarcia styku jest uproszczona (ang. Fast Union) i nie wymagadodatkowych BFS.
Przebiega ona wg następującego scenariusza:
-
określane są podobwody, do których należą węzły
AiB -
jeśli węzły
AiBnależą do tego samego podobwodu (ang. Internal Loop) to tworzy się połaczenie pomiędzy dwoma już istniejącymi węzłami:-
dane węzłów i krawędzi (
Set<EffectiveNode>,List<ComponentEdge>) z wyjściowego podobwodu są zapamiętywane, -
wyjściowy podobwód jest usuwany,
-
nowoutworzone połączenie dodawane jest do zapamiętanej listy krawędzi,
-
tworzony jest nowy podobwód, bazujący na zmodyfikowanej liście krawędzi, i istniejącej liście węzłów,
-
nie jest wymagany
BFS.
-
-
jeśli węzły
AiBnależały do różnych podobwodów (ang. Island Join)-
dane węzłów i krawędzi (
Set<EffectiveNode>,List<ComponentEdge>) z dwu wyjściowych podobwodów są zapamiętywane. -
wyjściowe podobwody są usuwane.
-
tworzony jest nowy, współny podobwód, który zawiera sumę węzłów i sumę krawędzi z wyjściowych podowodów (z zabezpieczeniem, aby nie tworzyć zduplikowanych węzłów, np.
PLUS_RAIL,MINUS_RAIL, które mogły istnieć w obu usuniętych podobwodach). -
nie jest wymagany
BFS.
-
Po obsłużeniu zmian w topologii, nowoutworzony podobwód jest "spłaszczany" wg zasady opisanej wyżej.
Słownik
- BFS
-
Algorytm przeszukiwania grafu wszerz (ang. Breadth-First Search).
- DSU
-
Struktura danych (i metody operujące na niej) pozwalająca na logiczne łączenie ze sobą zbiorów (tu: węzłów), ang. Disjoint-Set, Union/Find".
- MNA
-
Zestaw zasad dotyczących tworzenia równań macierzowych służących do obliczania wartości napięć i prądów w obwodzie (ang. Modified Nodal Analysis).