Parallele Zustandsautomaten - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Parallele Zustandsautomaten (/Thread-Parallele-Zustandsautomaten) |
Parallele Zustandsautomaten - Rainito - 12.05.2010 13:41 Hallo Leute, ich hab mal wieder ein Problem mit meinem Dauerlaufprüfstand und würde mich freuen wenn ich von Euch ein paar Anregungen bzw. Lösungsvorschläge zu folgendem Problem bekommen würde: Im Anhang ist mein komplettes Programm. Gestartet wird das Programm über die Startmaske, funktioniert bei euch nicht da keine Messtechnik initialisiert werden kann. In dieser Startmaske werden AI und DI gelesen und DO geschrieben die ich über Melder an die Prüfmaske versende und wieder empfange. Es sind 9 identische Prüfplätze somit hab ich 9 gleiche Zustandsautomaten bei denen der Ablauf absolut identisch ist, nur mit verschiedenen Messwerten gespeist werden. Kann die parallele Ausführung der 9 Prüfplätze so funktionieren oder hab ich da einen groben Denkfehler drin? Können die gleichen SUB VI´s die ich bei jedem Zustandsautomat benutze gleichzeitig von verschiedenen Zustandautomaten benutzt und verarbeitet werden? Problem ist dass je mehr prüfplätze ich in Betrieb nehme die Messungen verzögern...das Programm "hängt" und die Zeitsteuerung flöten geht. Würde mich freuen wenn einige die Zeit finden sich durch meinen Code ein bisschen zu wühlen. Schon mal vielen Dank im Voraus. Gruß Rainito Parallele Zustandsautomaten - IchSelbst - 12.05.2010 19:16 ' schrieb:Kann die parallele Ausführung der 9 Prüfplätze so funktionieren oder hab ich da einen groben Denkfehler drin?Ich bin der Meinung, so wie du das gepostet hast, kann das funktionieren. Zitat:Können die gleichen SUB VI´s die ich bei jedem Zustandsautomat benutze gleichzeitig von verschiedenen Zustandautomaten benutzt und verarbeitet werden?Ja. Das geht immer dann gut, wenn in den SubVIs Daten nicht permanent gespeichert werden müssen (solche Daten liegen für gewöhnlich in einem Schieberegister auf einer While-Schleife.) Einziger Nachteil: Wenn der eine Prüfplatz gerade auf ein SubVI zugreift, kann ein anderer Prüfplatz nicht gleichzeitig auf dieses SubVI zugreifen. Alle 9 Prüfplätze müssen also ein "Timesharing" machen. Abhilfe: SubVIs als reentrant definieren. Dann bekommt jeder Prüfstand sein eigenes SubVI. Zitat:Problem ist dass je mehr prüfplätze ich in Betrieb nehme die Messungen verzögern...das Programm "hängt" und die Zeitsteuerung flöten geht.Das kann daran liegen, dass die SubVIs eben nicht reentrant sind. Einfach das mit reentrant mal ausprobieren (Eigenschaften von VI -> Ausführung -> Ablaufinvariante Ausführung ankreuzen). Was ich aber viel lieber prinzipiell machen täte: Das SubVI Prüfmaske nur für einen Prüfstand auslegen, reentrant machen, und in der Startmaske 9 mal aufrufen. Parallele Zustandsautomaten - Rainito - 17.05.2010 06:44 Danke mal...werd das gleich mal ausprobieren und überprüfen. Da das System auf Windows XP läuft war eine andere Vermutung dass XP im Hintergrund irgendwelche Dienste noch macht und dadurch mein System langsamer wird, oder dass die Speicherung der MEssdaten auf die Festplatte ein Problem darstellt. Das wollt ich auch noch parallel überprüfen. Danke Gruß Rainer Parallele Zustandsautomaten - IchSelbst - 17.05.2010 07:32 ' schrieb:Da das System auf Windows XP läuft war eine andere Vermutung dass XP im Hintergrund irgendwelche Dienste noch macht und dadurch mein System langsamer wird,Einziger mir bekannter "Dienst", der den Rechner verlangsamt, ist der Virenscanner. Wenn der Rechner für Messwerterfassung konzipiert ist, sollte nichts anderes den Rechner verlangsamen. Zitat:oder dass die Speicherung der MEssdaten auf die Festplatte ein Problem darstellt.Ich sach mal so, stellt normalerweise kein Problem dar. Kommt natürlich auf die Menge der Daten an. Parallele Zustandsautomaten - Rainito - 17.05.2010 08:07 So. Hab das Programm gerade aktualisiert und ich muss sagen, es läuft schon viel viel besser. Sieht so aus als ob es an den SUB VI´s gelegen hat. Werde aber noch einige Tests machen und die Sache beobachten. Zur Abspeicherung der Messdaten: Ich hab die Messwertdatei für jeden Prüfstand offen. Geschrieben wird aber immer nur eine Messwertreihe (1 Zeile). Insgesamt hat eine Messdatei so max. 15-20 MB. Sollte also machbar sein oder? Gruß Rainer Parallele Zustandsautomaten - IchSelbst - 17.05.2010 09:13 ' schrieb:Zur Abspeicherung der Messdaten: Ich hab die Messwertdatei für jeden Prüfstand offen. Geschrieben wird aber immer nur eine Messwertreihe (1 Zeile). Insgesamt hat eine Messdatei so max. 15-20 MB. Sollte also machbar sein oder?Das klinkt insgesamt nach ASCII-Textfile. Ist zwar nicht so schön, sollte aber auch gehen. Die Größe der Datei ist weniger für LV beim Daten speichern relevant als später für das Auswerteprogramm. Offene Files haben immer einen Nachteil: Stürzt der Rechner ab, fehlen möglicherweise die letzten Teile der Datei. Hier könntest du kucken, ob es sowas wie einen flush() (Daten sofort schreiben) gibt. Parallele Zustandsautomaten - Rainito - 17.05.2010 09:33 ' schrieb:Das klinkt insgesamt nach ASCII-Textfile. Ist zwar nicht so schön, sollte aber auch gehen. Die Größe der Datei ist weniger für LV beim Daten speichern relevant als später für das Auswerteprogramm. Ja. Schreib alles in ein Textfile. Das hab aus dem Grund gemacht da die Zeilenanzahl bei einem Tabellendokument irgendwann mal am Ende ist. Und bei so ca. 720.000 Zeilen ist mir eine Textfile einfacher sicherer. Außerdem ist der Speicherplatz geringer. zu offenen Files: Da ich jede Messwertezeile direkt in die Datei schreibe fehlt mir maximal die letzte bei einem Absturz. Parallele Zustandsautomaten - IchSelbst - 17.05.2010 09:51 ' schrieb:zu offenen Files: Da ich jede Messwertezeile direkt in die Datei schreibe fehlt mir maximal die letzte bei einem Absturz.Das kann man so nicht sagen. Das kommt auch die Größe des Flush-Buffers an. Und auf das Betriebssystem etc. etc. Parallele Zustandsautomaten - Rainito - 31.05.2010 07:56 Hallo, mein Programm läuft mit der ablaufvarianten Steuerung der VI´s definitiv besser, nur reicht jetzt mein Speicher nicht mehr aus. Jetzt meckert LabVIEW ab und zu mal mit zu wenig virtueller Speicher und dann bricht das Programm ab. Kann ich den Speicher noch erhöhen oder mein Programm Speichertechnisch optimieren? Wenn ja wie? Noch mehr SUB VI´s erstellen? Gruß Rainito Parallele Zustandsautomaten - IchSelbst - 31.05.2010 08:05 ' schrieb:Jetzt meckert LabVIEW ab und zu mal mit zu wenig virtueller Speicher und dann bricht das Programm ab.Wie viel Speicher hat denn dein Rechner? Wie viel Speicher belegt denn das Programm zum Zeitpunkt des Startens (Windows-Taskmanager)? Wenn der Speicher kontinuierlich ansteigt, dann würde man was machen können. |