Szimulációk paraméterezése LabVIEW-ban, karbantartható módon

LabVIEW szimulációk késztésekor gyakori probléma, hogy az egyes programokat, illetve subVI-kat folyamatosan bővítjük új funkciókkal, így nehéz egy olyan szimulációs környezetet létrehozni az adott problémára, mely jól átlátható és jól karbantartható.

Amennyiben nem használunk subVI-okat, akkor minden egyes új funkció hozzáadásával programunk egyre inkább hasonlítani fog egy spagetti VI-ra. Ezen a problémán a subVI-ok bevezetése sem fog önmagában segíteni, ugyanis egyre több paraméter kell az egyes subVI-okba bekötni. A paraméterek számának növekedését jól lehet kezelni clusterekkel. Amennyiben várható, hogy egy-egy ilyen clustert egynél több helyen használunk, azonnal célszerű belőle típusdefiníciót készíteni. Így a kódot később is jól karban tudjuk majd tartani, az egyes típusdefiníciókat ugyanis később át tudjuk szerkeszteni, a változást pedig a projekt összes VI-a köveni fogja.

A típusdefiníciók használata általában egy jól követhető és karbantartható kódot eredményez. Azonban, főleg szimulációk kötegelt futtatásánál, rengeteg paramétert kell jól kézben tarthatóan kezelni, erre pedig a sok-sok, beálltásokat tartalmazó cluster nem feltétlenül a legjobb megoldás. Számos próbálkozás után arra jutottam, hogy a legtöbb feladatot jól meg lehet oldani, hogy ha a paramétereket egy 2D táblázatban tárolom el. A táblázat első oszlopa tartalmazza a paraméterek nevét. A második oszloptól kezdve pedig az egyes iterációkban felhasználandó paraméterértékek vannak. Ha egy paraméter értéke nem változik, akkor annak értékét elég a második oszlopban feltűntetni. A következő ábrán egy példa látható a paraméterekre. A LoopCount határozza meg az iterációk számát. Az éppen változtatott paraméter az R-Wire, a többi paraméter állandó a szimuláció során.

Minta konfigurációs táblázatra

Minta konfigurációs táblázatra

A következő ábrákon a szimulációs program blokkdiagramja látható. Minden egyes iterációban egy-egy oszlop van kiválasztva a konfigurációs táblázatból, ez van átadva a szimulációt végző VI-nak. A konfigurációs beálltások minden egyes subVI-hoz eljutnak. Amennyiben egy új funkcióval bővül a szimuláció, elegendő csak a táblázatot módosítani, valamint az éppen érintett subVI-t.

Szimulációs program mely oszloponként olvassa ki a konfigurációs paramétereket

Szimulációs program mely oszloponként olvassa ki a konfigurációs paramétereket

Szimulációt végrehajtó subVI - 1 szint

Szimulációt végrehajtó subVI - 1. szint

Szimulációt végrehajtó subVI 2. szint

Szimulációt végrehajtó subVI 2. szint

Szimulációt végrehajtó subVI 3. szint

Szimulációt végrehajtó subVI 3. szint

A konfigurációs fájlok kezelésére egy saját függvénykönyvtárat késztettem, kérés esetén ezt szívesen rendelkezésre bocsájtom (jelenleg még szerkesztés alatt van). A konfigurációs adatok mentésére és betöltésére két lehetőség is van: maga a fő VI is felkészthető az adatok betöltésére és mentésére (főleg, ha egyéb ok miatt eleve szükség van eseményvezérelt programozásra), de egy külső VI-n keresztül is elérhetjük a konfigurációs táblázatot.

Konfigurációs táblázat szerkeztése

Segédprogram a konfigurációs táblázat szerkeztésére

Hozzászóllások