Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
29.01.2020, 07:40 (Dieser Beitrag wurde zuletzt bearbeitet: 29.01.2020 07:40 von Titus85.)
ich habe mal eine etwas allgemeinere Frage, ich habe hier einen Prüfstand zu dem ich ein Programm geschrieben habe. (Bild hängt an, sollte ausreichen)
Ich habe das Programm erst einmal so geschrieben, dass ich alle Funktionen händisch steuern kann, die Daten korrekt aufgeichnet werden etc.. Jetzt will ich final, dass der Prüfstand sich einen Datensatz aus eine Liste zieht, in dem u.a. das Prüfprogramm und die Anzahl der Wiederholungen des Programms enthalten sind, dieses Programm dann abfährt und sich danach den nächsten Datensatz aus der Liste zieht usw..
Jetzt überlege ich seit gestern wie ich das am besten umsetzen kann und finde keinen Ansatz,bzw. bin mir sehr unsicher. Ich hatte an eine weitere parallele While-Schleife gedacht die sich durch die durch die Liste arbeitet und lokale Variablen des Steuer-Arrays beschreibt. Wäre das ein vernünftiger Ansatz, oder gibt es eine bessere Möglichkeit.
Zitat:Jetzt will ich final, dass der Prüfstand sich einen Datensatz aus eine Liste zieht, in dem u.a. das Prüfprogramm und die Anzahl der Wiederholungen des Programms enthalten sind, dieses Programm dann abfährt und sich danach den nächsten Datensatz aus der Liste zieht usw..
Das hört sich doch nach einer Statemachine an:
1. Vorgaben einlesen
2. einzelne Programmschritte abarbeiten
3. Daten speichern
4. zurück zu Punkt 1
Man könnte das Ganze auch zu einem QMH aufblasen…
Zitat:Ich hatte an eine weitere parallele While-Schleife gedacht die sich durch die durch die Liste arbeitet und lokale Variablen des Steuer-Arrays beschreibt. Wäre das ein vernünftiger Ansatz
IMHO NEIN!
Lokale Variablen sind Gift, wenn du dann anfängst, dein Programm zu modularisieren und weitere subVIs anlegen willst. Dann doch bitte eine vernünftige Datenverwaltung…
das war auch mein erster Gedanke, habe es dann aber gelassen weil ich mir gedacht habe, dass die Schleife stehen bleibt und die Datenerfassung stoppt während die Statemachine auf etwas wartet. Habe jetzt mal ein Beispiel eingepflegt und tja... es ist das passiert was ich erwartet habe, alles steht still, während auf ein Ereignis gewartet wird.
Mir ist schon klar, dass das mal wieder ein Bedienerproblem ist........ :-( aber ich komme gerade nicht darauf was ich falsch mache. Bzw. ich verstehe warum die Schleife nicht weiterläuft, aber ich weiß nicht wie ich das abstellen kann.
anhand des Bildes kann ich auch nicht sagen, warum die Schleife stehen bleiben sollte.
In der Case-Struktur wird doch nur ein Enum-Wert ausgegeben!?
Zitat:weil ich mir gedacht habe, dass die Schleife stehen bleibt und die Datenerfassung stoppt während die Statemachine auf etwas wartet. Habe jetzt mal ein Beispiel eingepflegt und tja... es ist das passiert was ich erwartet habe, alles steht still, während auf ein Ereignis gewartet wird.
Wieso muss die Statemachine auf ein "Ereignis" warten?
(Ich sehe nirgends eine Event-Struktur: von welchen Ereignissen schreibst du hier?)
anhand des Bildes kann ich auch nicht sagen, warum die Schleife stehen bleiben sollte.
In der Case-Struktur wird doch nur ein Enum-Wert ausgegeben!?
Zitat:weil ich mir gedacht habe, dass die Schleife stehen bleibt und die Datenerfassung stoppt während die Statemachine auf etwas wartet. Habe jetzt mal ein Beispiel eingepflegt und tja... es ist das passiert was ich erwartet habe, alles steht still, während auf ein Ereignis gewartet wird.
Wieso muss die Statemachine auf ein "Ereignis" warten?
(Ich sehe nirgends eine Event-Struktur: von welchen Ereignissen schreibst du hier?)
Ja ... ich bin ein Depp und stand auf dem Schlauch, natürlich muss ich nicht auf ein Ereignis warten, das kann man auch anders lösen, wenn ichs hab werde ich es posten. Danke schon einmal.
ich habe jetzt meine state machine fertig, sie kann auch alles was ich will.
Meine Frage wäre wo Du Verbesserungspotential siehst und ob das alles ordentlich programmiert wurde.
Zum Programm:
Auf Seite 2 findet sich eine Steuertabelle diese muss mit dem Häkchen "Steuertabelle aktivieren" aktiviert werden, Zahl der Versuche wählen, Testnummer (1-7) eintragen, sowie gewünschte Zyklenzahl. Dann auf "Einzelfahrt" oder Schleifenfahrt klicken. Danach auf "Prüfstand beginnt fahrt drücken, damit wird die Produktionsrückstand simuliert.
Dann hänge ich noch ein zweites Programm an zu dem ich gerne eine Meinung hätte, ich will einen unendlichen Zähler einbauen, hab es mit "aus Text lösen", "in Text schreiben gelöst", ist das ok oder gibt es da etwas besseres für?
Zitat:ich habe jetzt meine state machine fertig, sie kann auch alles was ich will.
Was will man mehr von einem Programm…
Zitat:Meine Frage wäre wo Du Verbesserungspotential siehst und ob das alles ordentlich programmiert wurde.
Wozu hast du Kopien von Bedienelementen als Indicator (wie z.B. Pause oder "Testablauf starten")?
Warum musst du so viele "value"-Properties nutzen, um dein Programm zu verwalten?
Wieso kann man das Programm nicht (sauber) beenden?
Es gibt eine "+1"-Funktion…
Warum ist "Stillstandkontrolle" ein U32?
Zitat:Wozu hast du Kopien von Bedienelementen als Indicator (wie z.B. Pause oder "Testablauf starten")?
Wieso kann man das Programm nicht (sauber) beenden?
Das sind nur Anzeigeelemente damit ich sehen kann ob sich das Programm richtig verhält, werden beim einpflegen ins eigentliche Programm nicht da sein, ebenso kann das Programm dann auch ordentlich beendet werden.
Zitat:Warum musst du so viele "value"-Properties nutzen, um dein Programm zu verwalten?
Ich muss sicherstellen, dass die Bedienelemente auf Null sind wenn die Steuerung verlassen wird. Gibt es da eine bessere Lösung?
Zitat:Warum ist "Stillstandkontrolle" ein U32?
Zufall. Irgendwo hergezogen. :-)
Zitat:Es gibt eine "+1"-Funktion…
Ah ja das stimmt, werde ich noch ändern. Vielen Dank für Deine Tipps.