Simulace: všechny signály

Projekt Qenex_Sim_SimulData_AllSignals.qproj najdete ve složce Examples vedle QInsight.exe. Nepotřebuje žádný hardware: všechna data generuje protokol Simulation Signals, takže jde o nejrychlejší způsob, jak si QInsight vyzkoušet a prohlédnout si většinu controlů za běhu.

Pracovní plocha Basic signals za běhuPracovní plocha Basic signals za běhu

Co ukázka předvádí

  • všech sedm skalárních signálů simulace (step, noisystep, walk1 až walk3, laosstrain, laosstress) a maticový signál thermal,
  • Python filtr: On-change trigger na zašuměném signálu spouští skript, který počítá exponenciální klouzavý průměr a výsledek zapisuje do virtuální proměnné, takže se filtrovaný průběh kreslí v grafu vedle originálu,
  • LAOS dvojici deformace a napětí v časovém grafu a v XY grafu jako Lissajousovu smyčku, kterou za běhu tvarují parametry nelinearity a harmonických zapisované z watch table,
  • teplotní pole jako proměnnou typu Matrix v Matrix controlu, s parametrem Hold, který generátor zastaví a dovolí buňky editovat,
  • výchozí hodnoty parametrů přes init= v Comm params, bez skriptu.

Co potřebujete

Pouze QInsight. Projekt otevřete, stiskněte Start a přepínejte mezi třemi záložkami pracovní plochy.

Projekt

Drivery a protokoly

Dvě dvojice bez jakéhokoli nastavení:

DriverProtokolRole
SimulationSimulation Signalsgeneruje všechny signály a čte parametry
Virtual Variables HostVirtual Variablespublikuje zápisy skriptu do proměnné FilterVal jako vzorky

Události

UdálostPeriodaPoužití
event20ms20 msschodovité sinusy, LAOS dvojice
event100ms100 msnáhodné procházky, parametry (u nich perioda nemá význam)
event250ms250 msteplotní pole

Proměnné

Generované signály (směr read):

ProměnnáTypsignalPoznámka
StepValfloatstepschodovitý sinus
NoisyStepValintnoisystepvstup filtru; On-change trigger filter.py (Delta 5, Eng)
Walk1Val, Walk2Val, Walk3Valdoublewalk1 … walk3náhodné procházky kolem 0, 10 a −5
LAOS/Straindoublelaosstrainamp="800";freq="0.5"
LAOS/Stressdoublelaosstressamp="800";freq="0.5", nelinearita z parametru
ThermalFieldMatrix 8×6, ushortthermalsměr readWrite, amp="40";freq="0.025", buňky v °C (konverze 0,1), osy v mm

Parametry (směr write, negenerují se, protokol je čte):

ProměnnásignalinitVýznam
Params/Nonlinnonlin0,6nelinearita napětí, 0 až 2
Params/H1Amph1amp680amplituda základní harmonické
Params/H1Freqh1freq0,5 Hzfrekvence základní harmonické, řídí i deformaci
Params/H1Phaseh1phase23°fáze základní harmonické
Params/H2Amph2amp144amplituda 3. harmonické
Params/H2Freqh2freq1,5 Hzfrekvence 3. harmonické
Params/H2Phaseh2phase76°fáze 3. harmonické
Params/Holdhold01 = zmrazit teplotní pole

Parametry 5. a 7. harmonické projekt záměrně nemá: díky tomu je jejich amplituda řízena nelinearitou a změna Nonlin je v grafu vidět. Kdyby projekt obsahoval i h3amp a h4amp, měly by přednost a parametr Nonlin by se neuplatnil.

Virtuální proměnná FilterVal (double) je přiřazená protokolu Virtual Variables; Comm params jsou prázdné.

Skripty

init.py (režim Startup) pouze připraví stav filtru. Parametry simulace se tu nenastavují, jejich výchozí hodnoty nastavuje protokol z init=.

val = 0.0
f = 0.15

filter.py (režim On Value Changed, trigger na NoisyStepVal) je celý filtr:

val += f * (NoisyStepVal.EngValue - val)

FilterVal.EngValue = val

Jde o exponenciální klouzavý průměr: nová hodnota se k naměřené hodnotě posune vždy o zlomek f zbývajícího rozdílu. Menší f znamená hladší, ale pomalejší průběh. Stav val je uložen v pythonovské proměnné, kterou všechny skripty projektu sdílejí. Zápis do FilterVal se publikuje jako nový vzorek, protože jde o virtuální proměnnou; zápis do proměnné jiného protokolu by UI událost nevyvolal.

Pracovní plochy

ZáložkaControly
Basic signalsgraf schodovitých sinusů s filtrem, graf náhodných procházek, gauge a signal controly, k tomu XY graf LAOS, matice teplotního pole a watch table parametrů H1 a H2 jako přehled všeho na jedné ploše
LAOSčasový graf deformace (levá osa) a napětí (pravá osa), XY graf napětí proti deformaci, watch table parametrů Nonlin, H1 a H2 v zápisovém režimu, signal controly
Thermal fieldMatrix control ThermalField, watch table s Hold

Co uvidíte a co vyzkoušet

Po Startu se všechny controly vyprázdní a plní se hodnotami přečtenými ze simulace; napětí kmitá s amplitudou kolem ±580 a XY graf kreslí uzavřenou smyčku.

Parametry se ve watch table zapisují ve write módu řádku: zadanou hodnotu odešle tlačítko Write v řádku (nebo Enter, je-li v kontextovém menu zapnuté Write on Enter). Účinek je v grafech vidět hned; ve watch table se zapsaná hodnota zobrazí až po jejím přečtení zpět ze simulace (controly neukazují zapsané hodnoty, jen přečtené).

  • Filtr: v grafu Basic signals sledujte, jak zelená filtrovaná křivka se zpožděním sleduje oranžový zašuměný signál. Změňte f v init.py na 0,05 a restartujte runtime: filtr bude hladší, ale pomalejší.
  • LAOS: ve watch table zapište Nonlin = 0 a smyčka se změní na elipsu; hodnota 1,5 ji zdeformuje. H2Amp = 300 zakřiví smyčku do tvaru S, H1Phase = 90 ji rozevře. H1Freq = 1 zrychlí deformaci i napětí zároveň, smyčka zůstane uzavřená.
  • Teplotní pole: oblast nejvyšší teploty obíhá kolem středu desky jednou za 40 s. Zapište Hold = 1, v Matrix controlu přepněte zápisový režim, upravte buňku a odešlete ji tlačítkem Write (nebo Enterem se zapnutým Write on Enter); hodnota zůstane, dokud Hold nevrátíte na 0.
  • Osy matice: upravte hodnotu na ose X. Generátor hodnoty os nepřepisuje, úprava zůstane zachována i při Hold = 0.
  • Stop a Start: simulace se spustí znovu od nuly, filtr od val = 0, parametry se vrátí na hodnoty z init=.

Související kapitoly