LabVIEWForum.de
Viele Cases aufschlüsseln - Wie geht ihr vor? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Viele Cases aufschlüsseln - Wie geht ihr vor? (/Thread-Viele-Cases-aufschluesseln-Wie-geht-ihr-vor)

Seiten: 1 2


Viele Cases aufschlüsseln - Wie geht ihr vor? - TSC - 14.07.2009 09:51

Moin zusammen,

ich bin dabei für eine automatische Regelung einer Lüftungsanlage ein entsprechendes VI zu strukturieren. Angehängt habe ich mal ein Flussdiagramm der obersten Ebene.
[attachment=19709]
Es gibt drei Kriterien die berücksichtigt werden müssen:[list=1]
[*]Regen (ja/nein)<>
[*]Außentemperatur (zu kalt, ok, zu warm)<>
[*]Innentemperatur (zu kalt, ok, zu warm)<>
[st]daraus ergeben sich dann am Ende 18 Fälle die ich unterschiedlich behandlen muss. Momentan habe ich viele ineinander geschachtelte Case-Strukturen. Das finde ich persönlich ziemlich häßlich. Habt ihr schöne Alternativen, Ideen oder Sonstiges.

Vielen dank für alle Anregungen,
Torsten


Viele Cases aufschlüsseln - Wie geht ihr vor? - eg - 14.07.2009 11:30

Wieso verschachtelt? Du kannst hier ruhig das State Machine Design Pattern anwenden. Findest in LabVIEW Getting Started Auswahlfenster->VI from Template->Standard State Machine.


Viele Cases aufschlüsseln - Wie geht ihr vor? - TSC - 14.07.2009 13:01

würde also heißen, dass ich die states "regnets?", "wie warm ists druaßen", "wie warm ists drinnen" und anschließend die 18 fälle anlege?

bin mir da noch nciht sicher ob das schöner ist, aber werde mal drüber nachdenken.


Viele Cases aufschlüsseln - Wie geht ihr vor? - IchSelbst - 14.07.2009 21:00

Statemachine ist immer gut. Da sind Änderungen einfach zu machen.

Du kannst auch folgendes machen: Generiere aus den drei Bedingungen - eine hat zwei Zustände => 1 Bit (ja/nein), zwei haben drei Zustände => 2 Bits (<,ok,>,nc) eine Zahl X-XX-XX im Bereich 0 bis 0x1F und gib die auf eine Case-Struktur.


Viele Cases aufschlüsseln - Wie geht ihr vor? - Lucki - 14.07.2009 21:56

Schlage Dir die hauptsächliche Verwendung der Funktion "Schwellert (1D-Array)" vor, um die Fälle zu selektieren. Dann wird alles recht übersichtlich. Habe es mal ungefähr skizziert. Die Array-Konstanten mit den entsprechenden Schwellwerten mußt Du natürlich selbst erstellen. (Und auch sonst ist noch Feinarbeit angesagt)
[attachment=19729]


Viele Cases aufschlüsseln - Wie geht ihr vor? - eg - 14.07.2009 22:11

Doch, ich habe es mir doch anders überlegt. Da ich State Machines in dem Sinne nicht für gut finde, würde ich es mit verschachtelten Case-Strukturen machen, also LabVIEW nativ.


Viele Cases aufschlüsseln - Wie geht ihr vor? - TSC - 14.07.2009 22:12

' schrieb:Du kannst auch folgendes machen: Generiere aus den drei Bedingungen - eine hat zwei Zustände => 1 Bit (ja/nein), zwei haben drei Zustände => 2 Bits (<,ok,>,nc) eine Zahl X-XX-XX im Bereich 0 bis 0x1F und gib die auf eine Case-Struktur.
Das verfahren kenne ich noch von Delphi, da hatte man bei dialogboxen ein argument, welches die angezeiten buttons und gleichzeitig das symbol in einem meldungsfenster angab. werde ich mal drüber nachdneken. damit könnte man quasi alle abfragen vorher machen und dann direkt die 18 cases aufschlüsseln.

gegen eine statmachine spricht für mich, dass ich so viele ähnmlcihe cases habe. also vom case regen würde ich weitergehen zum case "außen zu warm" genauso würde ich aber auch vom case "kein regen" zum case "außen zu warm" gehen und es müsste etwas völlig anderes passieren. da sehe ich auch noch keine übersichtliche struktur. aber evtl fällt mir ja noch was ein.

' schrieb:Schlage Dir die hauptsächliche Verwendung der Funktion "Schwellert (1D-Array)" vor, um die Fälle zu selektieren. Dann wird alles recht übersichtlich. Habe es mal ungefähr skizziert. Die Array-Konstanten mit den entsprechenden Schwellwerten mußt Du natürlich selbst erstellen. (Und auch sonst ist noch Feinarbeit angesagt)
auf den ersten blick schaut das interessant aus. werde ich zumindest an vielen stellen verwenden können.

jungs, vielen dank schonmal. es lohnt sich doch immer wieder auch mal einfacherer dinge nachzufragen. es kommen oft ideen, die einem völlig fern lagen.


Viele Cases aufschlüsseln - Wie geht ihr vor? - TSC - 14.07.2009 22:16

@eg: das ist meine momentane struktur. da finde ich es halt ziemlich doof, dass man die innerste case quasi 6 mal anlegen muss. also fürs programmieren nicht so schlimm, aber für die übersicht mag ich sowas nciht so gerne. um zu einem bestimmten case zu kommen, muss man drei strukturen richtig einstellen. hat natürlich auch den vorteil, dass man generelle aufgaben für alle untercases nur einmal machen muss. z.b. wenns regnet, fenster schließen.

;-)


Viele Cases aufschlüsseln - Wie geht ihr vor? - cb - 15.07.2009 06:52

darauf geb ich nur mal die kyptische antwort:
wenn die cases alle fast gleich sind und sich die Abarbeitung der Fälle nur durch den Wert von Eingangsgrößen ändert, dann würde ich vorschlagen du suchst die Schleifeninvariante und baust den entsprechenden Code dazu und sparst dir somit geschachtelte Cases ...Wink


Viele Cases aufschlüsseln - Wie geht ihr vor? - TSC - 15.07.2009 07:54

inhaltlich sind die cases leider völlig verschieden. es müssen andere geräte angesprochen werden, andere werte berechnet werden, andere prozesse eingeleitet werden. also die 18 cases sind tatsächlich 18 deutlich verschiedene.

LG
Torsten