Hallo GerdW,
ich habe alles hinbekommen denke ich mal. Nur stimmen die Messwerte nicht mehr. Kannst du bitte kurz über die VI´s , die ich anhänge drüberschauen ob vom Prinzip her alles richtig verbunden ist? Wenn ja muss ich mir die Formeln nochmal genauer anschauen.
[
attachment=61155]
[
attachment=61156]
Hallo an Alle nochmal,
es hat sich ein weiteres Problem in meinem Programm herausgestellt. Ich habe die ganze Zeit programmiert und immer wieder kurz Test laufen lassen um zu schauen ob alles funktioniert. Es geht immer noch darum zwei Keithely2000 Multimeter gleichzeitig laufen zu lassen, welche Messwerte aufnehmen die im Frontpanel visualisiert werden. Nun wollte ich das erste Mal einen längeren Test starten. Der Start klappt soweit auch und die Geräte schicken Messwerte aber nach etwa 2 Minuten bricht die Kommunikation zu den Keithelys abrupt ab (hab keinen Ahnung wieso). Muss dann immer den Computer neustarten und die Kommunikation wiederherstellen. Wenn ich es dann wieder länger laufen lassen will, passiert das gleiche nochmal. Kann mir da jmd helfen. Vielleicht hat ja jmd mit den Keithley2000 gearbeitet und kennt das Problem.
Hier mein "Daten lesen" SubVI und mein HauptVi.
[
attachment=61159]
[
attachment=61160]
Hallo K2000,
Zitat:ich habe alles hinbekommen denke ich mal. Nur stimmen die Messwerte nicht mehr. Kannst du bitte kurz über die VI´s , die ich anhänge drüberschauen ob vom Prinzip her alles richtig verbunden ist? Wenn ja muss ich mir die Formeln nochmal genauer anschauen.
Wenn die Rechenergebnisse nicht mehr passen, muss beim Umwandeln irgendwo ein Fehler reingekommen sein.
Das bedeutet: debuggen!
Dazu hilft es, wenn man solche Umstrukturierungen auch gleich nutzt, um "aufzuräumen":
[
attachment=61162]
Gerade Drähte, einfache Funktionen, keine ExpressVIs… (S. VI im Anhang.)
Zitat:Der Start klappt soweit auch und die Geräte schicken Messwerte aber nach etwa 2 Minuten bricht die Kommunikation zu den Keithelys abrupt ab (hab keinen Ahnung wieso). Muss dann immer den Computer neustarten und die Kommunikation wiederherstellen.
Du solltest dann aber eine Fehlernummer bekommen, wenn der Fehler auftritt.
Die lautet wie genau?
Hallo GerdW
danke für deine Hilfe.
bzgl Fehlernummer: wo sehe ich die denn? In LabView selbst?
Hallo K2000,
Zitat:bzgl Fehlernummer: wo sehe ich die denn? In LabView selbst?
Wozu genau ist dieser Error-Draht da, der in das Keithley-VI hineingeht und wieder herauskommt?
Ich dachte, über diese Grundlagen wären wir langsam hinweg…
Hallo GerdW,
aus unerfindlichen Gründen funktioniert gerade alles einwandfrei. Kann es vielleicht dran gelegen haben, dass das HauptVI mal gründlich aufgeräumt wurde? Vielleicht tritt das Problem die Tage ja wieder auf, dann melde ich mich wieder. Bis dahin schon mal vielen Dank.
Hallo GerdW,
also es funktioniert doch nur maximal 15 min. Der Fehlercode lautet -10373807339. Da steht dann "Fehler -1073807339 bei VISA: Lesen in Keithley 2000.lvlib:Error Query.vi->Keithley 2000.lvlib:Data Read Multiple.vi->2020_08_12_SubVi_Daten lesen_Keithley2_Final.vi->2020_08_28_Haupt_Vi.vi
Mögliche Ursachen:
VISA: (Hex 0xBFFF0015) Timeout ist vor Vervollständigung der Operation abgelaufen.
Hab das Timeout erhöht aber das hat auch nicht geholfen. Es liegt auch nur an dem zweiten Keithley. Also wenn bei diesem die Kommunikation abbricht, bricht sie beim ersten auch ab. Kannst du mit dem Fehlercode noch etwas anfangen?
[
attachment=61181]
Hallo K2000,
Zitat:Also wenn bei diesem die Kommunikation abbricht, bricht sie beim ersten auch ab. Kannst du mit dem Fehlercode noch etwas anfangen?
Dann musst du dein MainVI noch etwas weiter modularisieren…
(Auch wenn es so langsam schon besser aussieht!
)
Vorschlag:
Die Geräte-Kommunikation in eigene Schleifen legen, jedes Gerät eine eigene Schleife.
Messdaten dann per Queue/Notifier zur Hauptschleife mit den Berechnungen, Anzeigen, etc. übertragen.
So können sich die Geräte nicht gegenseitig stören, wenn eines in deiner Schleife mal länger als üblich nicht antwortet!
Wenn die Geräte-Kommunikation dann in eigenen Schleifen stattfindet, kannst du dort auch gleich eine kleine Statemachine einbauen: wenn ein Fehler (wie z.B. TimeOut) auftritt, wird die Verbindung beenden und gleich wieder neu aufgebaut. Wenn ein Fehler wiederholt auftritt, könnte man nach dem 4. Versuch eine "globale" Fehlermeldung abschicken…
Hallo GerdW,
danke für deine Hilfe. Ich werde das ganze mal versuchen. Was du mit "Statemachine" meinst weis ich allerdings nicht. Also ich verstehe was du damit erreichen willst aber nicht wie man das macht.
Hallo K2000,
zu einer Statemachine (aka Zustandsautomat) solltest du in Wikipedia genug Lehrstoff finden.
Wenn du den theoretischen Hintergrund erlesen hast, öffnest du einfach mal ein neues Projekt in LabVIEW und wählst dort das Statemachine-Beispielprojekt…