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!
ich bin Student und arbeite gerade mit LV 2011. Dieses Forum hat mir schon viel weitergeholfen, nur komme ich jetzt nur durch eure Foreneinträge nicht mehr weiter.
Im Zuge meiner Bachelorarbeit, baue ich eine Testanlage um. Diese Testanlage ist für ein Fördersystem. Auf diesem Fördersystem fahren Shuttle. Sie besteht aus verschiedenen Messeinrichtung und sammelt Werte über Zeitverhalten, Positioniergenauigkeit und Geschwindigkeitsdaten, der Shuttles, ein. Diese Messdaten werden von der Software SPS der Firma Beckhoff erkannt (bzw. vom den Buskopplerklemmen für die die es ganz genau nehmen) und an Labview übergeben. Nun schreibt Labview über das main.vi die Messwerte in ein Datenarray. Wenn der Shuttle nun eine gewisse Rundenzahl erreicht hat werden diese Messwerte (auf grundlage der Report Generation Toolkit for Office) in eine Excel- Tabelle geschrieben. In der Excel- Tabelle werden dann die Durchschnittswerte berechnet. Wie oft ein Fehler aufgetreten ist usw. (Sry muss es so beschreiben da meine Arbeit erst nach einreichtung veröffentlicht wird)
Jetzt zu meiner eigendlichen Frage:
Da mein Programm jetzt mittlerweile Mörder groß ist, bin ich gerade dabei die Laufzeitoptimierung und somit die Rechenleistung zu optimieren dass ich noch mehr Funktionen verarbeiten kann bzw. um die Tests (bzw. deren Verarbeitung möglichst schnell durchzuführen). Eine der Aufgabenstellungen ist nun die Auswertung die in Excel gemacht werden in LabView umzusetzen. Problem dabei ist nun nicht die Umsetzung, sondern die Laufzeit des Sub.vi. Da hier die Anlage eben auf die Verabeitung der Werte wartet und somit für die Zeit der Abarbeitung zum Stillstand kommt. Des is net so guat. Sprich die Abarbeitung soll so schnell wie möglich sein.
Output:
Berechnung von verschiedenen Parametern und Ausgabe dessen
Momentan funktioniert die Berechnung nur wenn die Schleifenbedingung >=1000ms ist. Sonst geht er ein und berechnet die letzten Werte gar nicht mehr.
Ich bitte um eure Hilfe.
Mfg DuffiDuck
P.S.: 1) Ich habe es mal als Version 9 gespeichert andere Formate können auch hochgeladen werden
2) Ich hoffe das ist nicht das falsche unterforum und wenn ja > ich hab kein anderes Gefunden
3) JAJA flat sequenz
Ich bin kein Politiker,
ich bin kein Dichter,
ich bin kein Mensch...
... ich bin Techniker.
Warum hälst du das Messprogramm für die Auswertung an?
Ich weis zwar nicht wie Zeitkritisch und am Limit der Rechnerresourcen das Messprogramm schon ist, aber an sich sollte man die Auswertung doch nebenläufig durchführen können (während der nächste Messzyklus läuft). Rein programmatisch ist das kein Problem - käme im Zweifel nur auf deine Hardware an.
Zitat:Märchen und Geschichten werden erzählt am Lagerfeuer, technischen Fakten werden mitgeteilt (oder so). (Genauso wie Software nicht auf einem Server "herumliegt", die ist dort installiert.)
*Zitat: IchSelbst*
28.09.2011, 15:43 (Dieser Beitrag wurde zuletzt bearbeitet: 28.09.2011 16:02 von jg.)
So, deine ersten 3 Sequenz-Schritte lassen sich (wenn ich bei den Array-Indices nicht durcheinander gekommen bin), auf das hier eindampfen:
Bist du eigentlich sicher, dass du ab Sequenz 4 den richtigen Index für die Auswahl der Seite aus deinem 3D-Array (Hilfe, ein 3D-Array!!) weitergeführt hast?
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
@ Kiesch - Wenn TwinCat einen Wert erhalten hat setz es mit AdsOcx eine globale Variable um dadurch ein, in einer Schleife befindlichen, CASE zu aktivieren und verarbeitet den Messwert in einen Sub.vi. Es gibt nun 4 verschiedene Test die das so machen. nur beim letzten Test wird entschieden ob die Rundenzahl errreicht wird. Dann wird ein Excel erstellt und die Daten wieder gelöscht. Wenn ich nun statt case das sub.vi mit der globalen (AdsOcx) Variable beaufschlage stürzt das Programm ab (Fehler ist wegen der AdsOcx erzeugung da auf gleiche Ressourcen zugegriffen wird bzw. könnte die Ressource im gleichen Moment gelöscht werden) Ist so zu sagen so aufgebaut das auf keinen Fall Ressourcen verloren gehen
@ Jens- Danke erstmal hab es bereits durchgesehen und du hast recht (zwecks Index). Sehe funktion hier zum ersten mal. Die Schleife is so zu sagen, eine vergewaltigte CASE Funktion? hab nich gewusst das man >< ein Array reinstopfen kann. Erleichtert das ziemlich allgemein.
Danke an alle erstmal. Werde es morgen direkt auf der Testanlage überprüfen und die Ergebnisse natürlich hier Posten.
Mfg duffi
Ich bin kein Politiker,
ich bin kein Dichter,
ich bin kein Mensch...
... ich bin Techniker.
29.09.2011, 07:24 (Dieser Beitrag wurde zuletzt bearbeitet: 29.09.2011 07:27 von jg.)
(29.09.2011 06:41 )DuffiDuck schrieb: @ Jens- Danke erstmal hab es bereits durchgesehen und du hast recht (zwecks Index). Sehe funktion hier zum ersten mal.
Wenn die Index-Auswahl nicht stimmte, dann also so:
(29.09.2011 06:41 )DuffiDuck schrieb: Die Schleife is so zu sagen, eine vergewaltigte CASE Funktion?
Meinst du die For-Loop, die ich eingebaut habe, für deine AGT/PGT Auswertung? Naja, eher so: da 2x dieselbe Auswerteroutine gefahren wird, schreit das nach einer Schleife.
Man könnte aus der xGT-Auswertung auch ein SubVI bauen, und dann 2x aufrufen. Danach könnte man auf einfache Weise auch noch den Rest der Sequenzstruktur löschen und alle Ergebnisse per Draht weiterführen.
(29.09.2011 06:41 )DuffiDuck schrieb: hab nich gewusst das man >< ein Array reinstopfen kann. Erleichtert das ziemlich allgemein.
Wie, 4 Jahre LV-Erfahrung, und du weißt nicht, dass viele LV-Funktionen auch auf Arrays und/Cluster anwendbar sind?
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!