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 würde gerne die Betriebsstunden von einigen Komponenten erfassen, um beispielsweise Filter etc. rechtzeitig austauschen zu können. Diese Komponenten werden ganz einfach über einen digitalen Ausgang bei LabView geschaltet. Dieser Betriebsstundenzähler soll so funktionieren, dass, jedes Mal wenn Komponenten durch den Ausgang auf EIN geschaltet werden, die Zeit mitgezählt wird. Diese Werte sollen auch bestehen bleiben, wenn das Programm beendet und am nächsten Tag wieder hochgefahren wird.
Da ich mich mit LabView noch kaum auskenne, bin ich komplett auf Eure Hilfe angewiesen. Ich wäre sehr dankbar, wenn jemand ein einfaches VI, an dem ich mich orientieren kann, erstellen könnte, bei dem über einen simplen Schalter die verstrichene Zeit mitgespeichert und idealerweise auch im Frontpanel angezeigt wird. Vielen Dank im Voraus liebe Gemeinde!
Viele Grüße,
Olli
Anzeige
01.11.2017, 17:36 (Dieser Beitrag wurde zuletzt bearbeitet: 01.11.2017 17:36 von GerdW.)
Zitat:Dieser Betriebsstundenzähler soll so funktionieren, dass, jedes Mal wenn Komponenten durch den Ausgang auf EIN geschaltet werden, die Zeit mitgezählt wird.
Code:
IF bool THEN
BSZ := BSZ + Schleifenintervall
ENDIF
Zitat:Diese Werte sollen auch bestehen bleiben, wenn das Programm beendet und am nächsten Tag wieder hochgefahren wird.
Wenn dein Programm startet, lädst du eine Datei mit den aktuellen Werten deiner BSZ.
Wenn dein Programm läuft, speicherst du (aus Sicherheitsgründen) in regelmäßigen Intervallen deine BSZ in diese Datei.
Wenn dein Programm beendet wird, speicherst du die BSZ ebenfalls.
Zitat:idealerweise auch im Frontpanel angezeigt wird
Einfach einen Indicator an den passenden Draht anschließen…
Was davon hast du schon probiert? Wo genau stößt du auf Probleme?
danke für die schnelle Hilfe! Mit Codes kann ich leider gar nichts anfangen, bin bisher nur einigermaßen mit den einfachsten Standardfunktionen vertraut. Ich habe noch einige Fragen zu deinem Programm:
1: Wie füge ich dieses Symbol ein und was genau ist das?
2: Warum warte ich in der Schleife 500ms und teile diese auch noch durch 1000?
3: Warum teile ich die Anzahl der Durchläufe durch 40 und gebe den Rest dann an die Case-Struktur weiter?
4: Was für Cases verstecken sich noch in der Case-Struktur?
Du siehst ich habe noch arge Probleme mit dem Verständnis sowie der Bedienung mit LabView.
02.11.2017, 16:15 (Dieser Beitrag wurde zuletzt bearbeitet: 02.11.2017 16:17 von GerdW.)
Zitat:Mit Codes kann ich leider gar nichts anfangen, bin bisher nur einigermaßen mit den einfachsten Standardfunktionen vertraut.
Dann schau dir mal die Links in meiner Signatur an!
Zitat:1: Wie füge ich dieses Symbol ein und was genau ist das?
Du wolltest doch eine Anzeige für deine BSZ (=Betriebsstundenzähler) haben? Das ist eine Anzeige…
(Tipp: In den LabVIEW-Optionen zum Blockdiagramm die Icon-Darstellung für Terminals abschalten. Nimmt zuviel Platz weg und bringt keinen Mehrwert…)
Zitat:2: Warum warte ich in der Schleife 500ms und teile diese auch noch durch 1000?
Die Wartezeit kannst du frei wählen. Ich verwende meist 250ms oder 500ms, viel genauer muss ich BSZ nicht verwalten. (Was stört dich ein möglicher Fehler von unter einer Sekunde, wenn du BSZ-Werte von >100h verwalten musst?)
Durch 1000 teilen musst du, wenn deine BSZ in Sekunden statt Millisekunden zählen sollen.
Zitat:3: Warum teile ich die Anzahl der Durchläufe durch 40 und gebe den Rest dann an die Case-Struktur weiter?
Auch hier wieder: dies ist ein frei gewählter Wert.
Wie ich oben schrieb: in regelmäßigen Abständen deine BSZ in der Datei sichern, damit sie bei einem Crash nicht verloren gehen. Im Beispiel habe ich 40*500ms=20s gewählt…
Zitat:4: Was für Cases verstecken sich noch in der Case-Struktur?
Es gibt noch einen weiteren Case, und der ist leer: allzuoft muss man die BSZ ja auch nicht sichern…
Du hast mir bis jetzt schon wahnsinnig geholfen! Wenn ich das Programm starte, zählt er beim Betätigen des Schalters bereits die Zeit.
Zitat:Du wolltest doch eine Anzeige für deine BSZ (=Betriebsstundenzähler) haben? Das ist eine Anzeige…
(Tipp: In den LabVIEW-Optionen zum Blockdiagramm die Icon-Darstellung für Terminals abschalten. Nimmt zuviel Platz weg und bringt keinen Mehrwert…)
Aaaaah ich habe diese Symbole vorher immer ewig gesucht. Manche Dinge sind eigentlich so einfach, man muss sie nur einmal gesagt bekommen.
So nun zu meinen restlichen Problemen:
1: Das Programm fragt direkt am Anfang, aus welcher Datei er lesen soll. Ich hatte im Voraus einfach eine leere Excel-Datei erstellt und diese dann angeklickt. Anschließend fragt er ca. alle 10 Sekunden, in welche Datei er schreiben soll. Kann ich bereits im Vorfeld schon eine Datei zum Lesen und Schreiben festlegen, so dass er gar nicht mehr danach fragt? Wenn ja, wie?
2: Wenn ich nach Beendigung des Programms die Excel Datei öffnen will, bekomme ich die Meldung, dass das Dateiformat ungültig ist. Woran liegt das? In welchem Format speichert LabView?
3: Wenn ich das Programm öffne, sind mein Start- und Stoppschalter beide schon betätigt, daher muss ich im Moment vor dem Starten des Programms jedes Mal mit der Maus beide Schalter ausschalten. Da muss es doch auch eine ganz simple Lösung für geben, oder?
Naja wie gesagt, ich stehe noch ganz am Anfang und muss mir alles selber beibringen. Vielen Dank schon mal Gerd!
Anzeige
03.11.2017, 10:09 (Dieser Beitrag wurde zuletzt bearbeitet: 03.11.2017 10:10 von GerdW.)
Zitat:1: Das Programm fragt direkt am Anfang, aus welcher Datei er lesen soll. Ich hatte im Voraus einfach eine leere Excel-Datei erstellt und diese dann angeklickt. Anschließend fragt er ca. alle 10 Sekunden, in welche Datei er schreiben soll. Kann ich bereits im Vorfeld schon eine Datei zum Lesen und Schreiben festlegen, so dass er gar nicht mehr danach fragt? Wenn ja, wie?
Na klar kann man sowas festlegen!
Hast du dir eigentlich mal die Hilfe zu dieser Funktion durchgelesen? Dat steht nämlich, wie das geht!
(LabVIEW kommt auch mit jeder Menge Beispiel-VIs, da wird sowas auch erklärt!)
Zitat:2: Wenn ich nach Beendigung des Programms die Excel Datei öffnen will, bekomme ich die Meldung, dass das Dateiformat ungültig ist. Woran liegt das? In welchem Format speichert LabView?
Hast du dir mal die Hilfe zu dieser Funktion durchgelesen? Da steht das nämlich…
"Spreadsheet"-Dateien sind KEINE "Excel"-Dateien, sondern einfach formatierter Text (aka CSV-Dateien). Und so muss man sie auch behandeln…
Zitat:3: Wenn ich das Programm öffne, sind mein Start- und Stoppschalter beide schon betätigt, daher muss ich im Moment vor dem Starten des Programms jedes Mal mit der Maus beide Schalter ausschalten. Da muss es doch auch eine ganz simple Lösung für geben, oder?
Dann solltest du dein VI so erstellen, dass die Schalter eben nicht gedrückt sind…
(Rechtsklick auf ein Control, Datenoperation -> Aktueller Wert als Standard, dann speichern nicht vergessen…)
Das mit den Links in meiner Signatur hast du schon beachtet, oder?
Das Bild oben war nur ein simples Beispiel! Du musst da schon noch einiges an "Drumherum" selbst programmieren!
Wie wäre z.B. eine Verwaltung deiner BSZ mitsamt ihres zugeordneten Namens?
Zitat:Hast du dir eigentlich mal die Hilfe zu dieser Funktion durchgelesen? Dat steht nämlich, wie das geht!
(LabVIEW kommt auch mit jeder Menge Beispiel-VIs, da wird sowas auch erklärt!)
Hat mit der Hilfe nach ein bisschen probieren auch alles super geklappt. Kannst Du mir vielleicht noch sagen, wo man die Beispiel-VIs findet? Ich finde in der Hilfe nur mehr oder weniger gut erklärt die anzuschließenden Formate.
Zitat:Das Bild oben war nur ein simples Beispiel! Du musst da schon noch einiges an "Drumherum" selbst programmieren!
Wie wäre z.B. eine Verwaltung deiner BSZ mitsamt ihres zugeordneten Namens?
Ja das bekomme ich nach meinen Anforderungen alles programmiert. Ein zugeordneter Name wäre natürlich noch super. Kenne bisher nur die Funktion "Attribute für dynamische Daten festlegen", das hilft mir hierbei natürlich wenig.
Ich habe noch versucht, den Wert nur für die Anzeige auf dem Frontpanel in Stunden umzurechnen. Er zählt zwar weiterhin mit, speichert dann die Werte aber nicht mehr ab und fängt beim nächsten mal wieder von vorne an zu zählen. Dabei verändere ich doch eigentlich nur die Anzeige an sich, das Lesen und Schreiben der Datei rühre ich doch gar nicht an. Woran liegt das? (siehe Bild)
Zitat:Kannst Du mir vielleicht noch sagen, wo man die Beispiel-VIs findet?
Im Hilfe-Menü von LabVIEW: "Beispiele suchen…"
Zitat:Ein zugeordneter Name wäre natürlich noch super.
Du könntest im Spreadsheet die erste Spalte für die Namen nehmen und in der zweiten Spalte die Zählerstände eintragen…
(Wie man das in Excel auch machen würde.)
Zitat:Ich habe noch versucht, den Wert nur für die Anzeige auf dem Frontpanel in Stunden umzurechnen.
Warum veränderst du nicht einfach die Formatierung deiner Anzeige?
Man kann numerische Anzeigen auch auf Zeit-Anzeige umformatieren…
Zitat:Er zählt zwar weiterhin mit, speichert dann die Werte aber nicht mehr ab und fängt beim nächsten mal wieder von vorne an zu zählen. Dabei verändere ich doch eigentlich nur die Anzeige an sich, das Lesen und Schreiben der Datei rühre ich doch gar nicht an. Woran liegt das?
Das kann ich anhand eines Bildes nicht debuggen!
Eigentlich sieht es ok aus…
Was hast du beim Debugging herausgefunden?
das VI funktioniert einzeln jetzt genau so wie es soll. Vielen Dank dafür!
Jetzt habe ich noch ein Problem damit, dieses als SubVI in ein anderes Programm einzubinden. Wenn ich das VI einfüge funktioniert das gesamte übergeordnete VI nicht mehr. Ich gehe mal davon aus, dass es daran liegt, dass die While-Schleife meines Betriebsstundenzählers dauerhaft aktiv ist und daher das restliche Programm darauf wartet. Ohne die While-Schleife funktioniert mein Zähler allerdings nicht, da ich ja durch die Anzahl der Iterationen die Sekunden zähle. Gibt es dafür eine Lösung?