(05.09.2014 08:51 )lola2014 schrieb: Das 1. Problem:
ich kann den Schalter "Start M fahren"(sieh Vi) nicht als Konstant sondern als Bedienelement definieren, weil der Zustand von diesem Schalter immer von 0 auf 1 geändert muss. Damit der Motor laufen kann.
Mir ist die Frage bzw. das Problem nicht klar.
Meinst Du, dass das angeschlossene VI erst einmal mit "0" am Eingang aufgerufen werden muss und danach nochmal mit "1", damit etwas passiert? Dann könntest Du es einfach zweimal hintereinander mit den entsprechenden Konstanten aufrufen.
Oder meinst Du etwas anderes? Dann müsstest Du das nochmal erklären.
(05.09.2014 08:51 )lola2014 schrieb: Das 2. Problem:
der Stopp Schalter hängt. Und lässt das Programm nicht enden.
Ursache ist mir unklar, aber ich vermute dass der State "warten auf Ereignis" aus irgendeinem Grund nicht erreicht wird. Somit auch nicht die Ereignisstruktur und auch keine Stop-Tasten-Abfrage. Evtl. mal die Glühlampe benutzen? (Leiste oben auf Blockdiagramm) Die lässt sich auch nach dem Programmstart (z.B. erst kurz vor Druck auf Stopp) einschalten.
Fehler gerade entdeckt:
Bei " Check Position Mitte" kann sich "INIT WERT" ja gar nicht ändern. Daher wird dieser Case auch nie verlassen. Hier muss also Dein Gerät nochmal ausdrücklich abgefragt werden. (Oder den Wert in einer seperaten(!) Schleife aktualisieren.)
Ausserdem ist es besser (falls möglich) mit "größer-gleich" oder "kleiner-gleich" arbeiten, falls die 25 mal nicht "genau" getroffen wird.
Oder einen Schleifen-/Zeit-Zähler integrieren der z.B. nach der doppelten der üblichen Maximal-Zeit mit Fehlermeldung abbricht. (Oder eine zusätzliche Abbruch-Taste zumindest für Testzwecke.)
Weitere Ideen:
- Ist es Absicht, dass "AdsPortOpen" bei jedem Schleifendurchlauf aufgerufen wird? Üblicherweise finden solche "Open-Aktionen" einmalig vor Schleifenbeginn statt. (Ebenso könnte man die Cluster-Definition durch eine Konstante vor der Schleife ersetzen. Aber das hat eher was mit aufräumen als mit Funktionalität zu tun.)
- Wenn pro Ereignis genau ein Case aufgerufen wird, kann man dessen Inhalt auch direkt in die Case-Struktur platzieren. Ob die Sache dadurch übersichtlicher und/oder besser wartbar wird, ist aber Geschmackssache.
Zur Buchfrage:
Das genannte Buch kenne ich nicht. Aber unter den vielenvielen Labviewbüchern habe ich bisher nur zwei (für mich) brauchbare Sachen gefunden: Zum einen die Einführung in Labview (Georgi/Metin) und zum anderen die eingebaute Hilfefunktion (ggf. auch Online) von NI. Gerade letztere wird gerne unterschätzt weil die Erwartungshaltung durch viele schlechte Hilfen bei anderen Programmen recht niedrig ist....
Aber beides ist auch wieder Geschmackssache. Gerade in Spezialgebiten wird es noch andere gute Quellen geben.