Flo884
08.04.2009, 14:34
Hallo zusammen,
hab mit meinem erstellten Programm mal wieder ein Problem wobei ich nicht so recht weiß wo das Problem überhaupt liegt.
Ich vermute mal das es an der seriellen Schnittstelle liegt.
Zum Programm:
Ich lese über eine serielle Schnittstelle die Daten eines Wechselrichters einer Solaranlage aus. Die Daten werden im Stringformat alle 10 Sekunden vom Wechselrichter über die RS232-Schnittstelle ausgegeben. Mit meinem Programm speichere ich die Strings in einer txt-Datei ab und verarbeite die Daten weiter (z.B. ermitteln der Tagesgesamtleistung, Ertrag der Anlage, eingespeiste Leistung pro Stunde /Tag usw...)
Um mein erstelltes LabVIEW-Programm auch ohne Wechselrichter testen zu können, habe ich ein C-Programm, dass die Datenstrings des Wechselrichters simuliert.
Zum Problem:
Um die Funktion des erstellten Programms zu testen, habe ich anfänglich über das C-Programm jede Sekunde einen Datenstring ausgegeben und in mein LabVIEW-Programm eingelesen. Den Timeout des VI´s "VISA: Auf Ergebnis warten" habe ich dabei auf 1 Sekunde eingestellt.
Mit dieser Konfiguration funktioniert das Einlesen und Abspeichern der Strings ohne Probleme. Auch über längere Zeit werden alle Daten übernommen und abgespeichert.
Wird nun jedoch nur alle 10 Sekunden ein Datenstring ausgegeben (wie es später am Wechselrichter auch sein wird), werden nicht mehr alle Werte übernommen. Die Anzahl der abgespeicherten Strings pro Minute varriert dabei. Mal sind es nur 3, 4 oder 5 Strings. Das alle Werte pro Minute übernommen und abgespeichert werden kommt sogut wie nie vor.
Setze ich nun den Timeout von einer Sekunde auf 3 Sekunden, werden alle Werte ohne Probleme übernommen und abgespeichert.
Wird das laufende Programm über den "Ausführung abbrechen"-Button gestoppt, rechnet der PC sehr lange bis das Programm wirklich gestoppt ist und man wieder darauf zugreifen kann. Je nach dem wie lange das Programm gelaufen ist schmiert LabVIEW sogar komplett ab und kann nur über "Sofortbeenden" abgebrochen werden.
Hat jemand eine Idee, wo ich ansetzen könnte um den Fehler zu beheben ??
Kann das erstellte Programm leider nicht hochladen, da es sehr umfangreich ist.
Hab mal nen Screenshoot angefügt wie ich die Serielle-Schnittstelle auslese:
Gruß Flo
hab mit meinem erstellten Programm mal wieder ein Problem wobei ich nicht so recht weiß wo das Problem überhaupt liegt.
Ich vermute mal das es an der seriellen Schnittstelle liegt.
Zum Programm:
Ich lese über eine serielle Schnittstelle die Daten eines Wechselrichters einer Solaranlage aus. Die Daten werden im Stringformat alle 10 Sekunden vom Wechselrichter über die RS232-Schnittstelle ausgegeben. Mit meinem Programm speichere ich die Strings in einer txt-Datei ab und verarbeite die Daten weiter (z.B. ermitteln der Tagesgesamtleistung, Ertrag der Anlage, eingespeiste Leistung pro Stunde /Tag usw...)
Um mein erstelltes LabVIEW-Programm auch ohne Wechselrichter testen zu können, habe ich ein C-Programm, dass die Datenstrings des Wechselrichters simuliert.
Zum Problem:
Um die Funktion des erstellten Programms zu testen, habe ich anfänglich über das C-Programm jede Sekunde einen Datenstring ausgegeben und in mein LabVIEW-Programm eingelesen. Den Timeout des VI´s "VISA: Auf Ergebnis warten" habe ich dabei auf 1 Sekunde eingestellt.
Mit dieser Konfiguration funktioniert das Einlesen und Abspeichern der Strings ohne Probleme. Auch über längere Zeit werden alle Daten übernommen und abgespeichert.
Wird nun jedoch nur alle 10 Sekunden ein Datenstring ausgegeben (wie es später am Wechselrichter auch sein wird), werden nicht mehr alle Werte übernommen. Die Anzahl der abgespeicherten Strings pro Minute varriert dabei. Mal sind es nur 3, 4 oder 5 Strings. Das alle Werte pro Minute übernommen und abgespeichert werden kommt sogut wie nie vor.
Setze ich nun den Timeout von einer Sekunde auf 3 Sekunden, werden alle Werte ohne Probleme übernommen und abgespeichert.
Wird das laufende Programm über den "Ausführung abbrechen"-Button gestoppt, rechnet der PC sehr lange bis das Programm wirklich gestoppt ist und man wieder darauf zugreifen kann. Je nach dem wie lange das Programm gelaufen ist schmiert LabVIEW sogar komplett ab und kann nur über "Sofortbeenden" abgebrochen werden.
Hat jemand eine Idee, wo ich ansetzen könnte um den Fehler zu beheben ??
Kann das erstellte Programm leider nicht hochladen, da es sehr umfangreich ist.
Hab mal nen Screenshoot angefügt wie ich die Serielle-Schnittstelle auslese:
Gruß Flo