' schrieb:Hallo,
ich habe jetzt eine Prüfstandsteuerung erstellt. Das Programm läuft eigentlich sehr gut, doch gestern habe ich das Temperaturerfassungs-VI in mein Hauptprogramm eingebunden und wenn ich diese aktiviere, bleibt das Programm fast stehen. Es hat wahrscheinlich etwas mit dem initialisieren der seriellen Schnittstelle zu tun, aber ich weiß nicht, wie ich das ändern kann.
Ich habe unten das Hauptprogramm "Wirkungsgradprüfstand" und das Unterprogramm "Temperaturerfassung Versuch" angehängt.
Wäre super, wenn da mal jemand drüber schauen könnte.
Vielen Dank.
Andi
<div align="left">
EDIT:
Sorry, Achim, wenn ich mich jetzt in manchen Fällen wiederhole, aber ich hab noch geschieben, als du gepostet hast....
EDIT ENDE
Hallo!
Habe mir das gerade mal angeschaut.
Folgendes ist mir aufgefallen:
Du solltest die Schnittstelle vielleicht nicht jedes mal initialisieren und nach der Messung wieder schließen.
Öffne und schließe die Schnittstelle im Hauptprogramm einmalig und übergebe einfach nur den VISA-Resource-Name an dein Unterprogramm (temperaturerfassung_versuch.vi)
Dann sendest du kein LF oder CR zum Peripheriegerät. Ist das richtig?! Ich habe bis jetzt nur ein Gerät verwendet, dass kein solches Zeichen am Ende des Datenstroms haben möchte.
Da würde ich noch mal nachforschen.
Wenn dein Gerät nämlich auf ein CR oder LF wartet, und du sendest das nicht, läuft deine Lesefunktion jedesmal in den Timout (dazu mehr unten).
Mit der "Bytes at Port" Routine habe ich schleichte Erfahrungen. Das klappt nicht immer. Besser ist, den Term.-Chart zu verwenden.
Den hast Du aber deaktiviert. Das würde ich nur machen, wenn dein Gerät kein Term.-Chart sendet.
Im Moment hast du ein LF eingegeben. Überprüf das mal. Ich hatte bis jetzt überwiegend mit geräten zu tun, die ein CR senden.
Für den Timeout hast du 10 sek!!! eingegeben. Das ist etwas viel. Ich verwende hier immer 300ms. Wenn innerhalb von 300 ms keine Antwort kommt, dann kommt die auch in 10 sek nicht.
Ich würde diese zeit auf jeden Fall verkürzen. Vieleicht läuft dadurch dein Programm schon flüssiger.
Und dann empfehle ich dir auch noch, mal eine Sonde auf den Error-out der VISA-REad funktion zu setzen. Da kannst du dann ja lesen, ob es fehler, und wennn ja: welche es gibt.
</div>