Modelowanie układów dynamicznych (z przykładem)


Modelowanie układów dynamicznych (z przykładem).

                             

W poniższym rozdziale omówiono zasady tworzenia modeli dynamicznych w programie Simultus oraz pokazano realizację takiego układu na przykładzie drgającej masy. Przypominamy, że istnieje możliwość podłączenia utworzonego przez nas modelu do symulowanego lub rzeczywistego sterownika PLC FATEK!

Poniższy przykład zrealizowano używając języka bloków funkcyjnych. Ten sam efekt można osiągnąć stosując język skryptowy.



W programie Simultus można modelować zachowanie się układów dynamicznych. Należy przy tym wziąć pod uwagę, że program Simultus służy głównie do obserwacji zachowania się obiektów w czasie rzeczywistym i z założenia działa na podobnej zasadzie jak sterownik przemysłowy. W związku z tym:

1) Symuluje tylko działanie układów dyskretnych.
2) Czas próbkowania musi być stały i ściśle określony.
3) Nie ma możliwości stosowania na diagramie bezpośrednich pętli sprzężenia zwrotnego - wartość sprzężenia zwrotnego należy przekazać np. przez rejestr VRn (lub Rn).

Ad.1)
W programie Simultus nie dysponujemy blokami do symulacji układów ciągłych, ponieważ w praktyce w komputerowym systemie sterowania taki układ musi być zrealizowany jako układ dyskretny. Modele układów ciągłych muszą być w związku z tym zamienione na modele dyskretne.

Ad.2)
W układzie sterowania należy uwzględnić czas próbkowania.

Ustawienia częstotliwości pracy cykli symulacji można wykonać wybierając z menu górnego ustawienia symulacji:



Po wybraniu tej opcji pojawi się okienko ustawień symulacji:



Jeżeli chcemy obserwować zachowanie się układu w czasie rzeczywistym to musi być zaznaczona pierwsza górna opcja jak na rysunku powyżej.

Okres symulacji podajemy w mikrosekundach. Należy pamiętać, że obliczenia zajmują komputerowi określony czas uzależniony od jego parametrów technicznych ale również od złożoności naszego modelu symulacyjnego. Faktyczny czas symulacji jest wyświetlany w oknie diagramu, u dołu ekranu:



Zgodnie w uwagą napisaną czerwoną czcionką w oknie ustawień symulacji, czas ten może się różnić od ustawionego co wynika ze sposobu pracy systemu operacyjnego Windows.

Przy dokładnych obliczeniach czas cyklu jest kluczowy. Dlatego istnieje możliwość sprawdzenia go w każdym cyklu programu z dokładnością do 1 mikrosekundy.
W tym celu należy zastosować blok funkcyjny SYS_DATA dostępny w zakładce 'Timery i liczniki'. Wartości wyjściowe z tego bloku można przekopiować do wybranych rejestrów i na ich podstawie skorygować odpowiednio nasze obliczenia:



Wartość na wyjściu 'cycle_time' określa czas obliczania jednego cyklu programu. Możemy na tej podstawie oszacować maksymalną częstotliwość jaką możemy ustawić dla naszej symulacji, aby komputer zdążył wykonać wszystkie obliczenia w czasie rzeczywistym.

'Last_loop_time' to czas wykonania ostatniej pętli sterowania.

Więcej o cyklach programu można przeczytać tutaj.

W przypadku bloków funkcyjnych, dla których wynik działania jest uzależniony od czasu, uwzględnienie czasu cyklu jest kluczowe. Np. blok funkcyjny INTEGRATOR jest po prostu sumatorem wartości, które pojawiają się na jego wejściu w kolejnych cyklach programu. Dlatego, aby całka była prawidłowo liczona w dziedzinie czasu należy przed lub za blokiem pomnożyć wartość sygnału przez czas próbkowania w odpowiednich jednostkach. Na poniższym przykładzie pokazano jak to zrealizować dla okresu próbkowania T=500 [mikrosekund] = 0,0005 [s] (częstotliwość cykli programu wynosi w tym przypadku 2 kHz):



Możemy oczywiście powyższe działanie połączyć z danymi z bloku SYS_DATA w sposób następujący (mnożenie wartości wyjściowej z bloku przez 0.000001 wynika ze zmiany jednostek z mikrosekund na sekundy):



PRZYKŁAD:

Poniżej przedstawiono przykład realizacji modelu masy M = 250 [kg] zawieszonej na sprężynie o sztywności k = 300 [N/m], do której zamocowano dodatkowo tłumik o tłumieniu B = 700 [Ns/m] (wymagana wersja programu Simultus EDU Plus).




Model matematyczny układu opisano wzorem:



Uwzględniając powyższe uwagi modelowany układ można zrealizować jak na diagramie poniżej:



Rejestr VR1 służy do przechowywania wartości prędkości ruchu dx/dt a rejestr VR2 do przechowywania położenia x masy M.
Przeskalowanie wartości wejściowej do bloku 6DOF_AXIS wynika z zamiany jednostek [m] stosowanych w modelu na diagramie na [mm] stosowane w wizualizacji.
Dla przejrzystości, na powyższym diagramie, nie pokazano bloku odpowiedzialnego za rejestrowanie przebiegu sygnałów.
Skokowe wymuszenie siły F = 300 [N] następuje poprzez przełącznik (SWITCH_BUTTON).
Efekt działania symulacji przedstawiono poniżej.