INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Probleme mit Datenerfassung über serielle Schnittstelle (RS232)



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!

08.04.2009, 14:34
Beitrag #1

Flo884
Unregistered


 







Probleme mit Datenerfassung über serielle Schnittstelle (RS232)
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


Angehängte Datei(en) Thumbnail(s)
   
Diese Nachricht in einer Antwort zitieren to top
Anzeige
08.04.2009, 19:58
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Probleme mit Datenerfassung über serielle Schnittstelle (RS232)
Schuss ins Blaue: Setze mal den Timeout bei Config Serial Port höher. Der hast du nichts angeschlossen, und der Timeout steht default-mäßig genau bei 10 Sekunden.

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!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
08.04.2009, 20:51
Beitrag #3

srokajo Offline
LVF-Gelegenheitsschr
*


Beiträge: 17
Registriert seit: Mar 2008

2011
1998
DE

14797
Deutschland
Probleme mit Datenerfassung über serielle Schnittstelle (RS232)
hi
als stabile Art und Weise Daten über RS-232 von einem Greät zu bekommen,
benutze ich oft folgende Einstellung. Ein Time Out von 1000 ms sowie warten auf das eingestellte Abschlußzeichen. In deinen Eigenschaften muß Du das vorhereinstellen. Erkennt LabVIEW das Abschußzeichen ist der String vollständig. Die mindest Time Out Zeit kann man durch rumspielen ermitteln.
Gruß
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
09.04.2009, 14:24
Beitrag #4

Flo884
Unregistered


 







Probleme mit Datenerfassung über serielle Schnittstelle (RS232)
Hallo zusammen,

vielen Dank für eure Antworten!

Hab beide Vorschläge mal ausprobiert. Hab den Timout am VI "Seriellen Port konfigurieren" mehrmals verändert und auch das Abschlusszeichen entsprechend eingestellt.

Die Werte werden nun mit einem Timout von einer Sekunde am VI Auf Ergebnis warten und den obigen Einstellungen soweit vollständig übernommen und abgespeichert.

Läuft das Programm allerdings für eine längere Zeit durch, werden ab einer Programmlaufzeit von ca. 2 Stunden die Strings wieder nur sporadisch übernommen.

Bin mir nun nicht sicher ob das Problem nur an der Einstellung der Schnittstelle liegt.

Auf einem anderen Rechner (ca. 1GB mehr Arbeitsspeicher) läuft das Programm ca. 5 Stunden ohne Probleme dann werden die Strings auch wieder nur sporadisch übernommen.

Kann es sein das das Programm irgendwo einen Zwischenspeicher belegt, der mit der Zeit immer größer wird und sich dadürch die Programmlaufzeit stehtig verlängert ??

Gruß Flo
Diese Nachricht in einer Antwort zitieren to top
09.04.2009, 15:58
Beitrag #5

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Probleme mit Datenerfassung über serielle Schnittstelle (RS232)
' schrieb:Kann es sein das das Programm irgendwo einen Zwischenspeicher belegt, der mit der Zeit immer größer wird und sich dadürch die Programmlaufzeit stehtig verlängert ??
Im Prinzip ja. Dann hast du normalerweise aber irgendwas schlecht programmiert.

Hast du mal im Taskmanager gekuckt, was da die Speicherauslastung macht?

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.04.2009, 09:26
Beitrag #6

Flo884
Unregistered


 







Probleme mit Datenerfassung über serielle Schnittstelle (RS232)
Danke für den Tipp,

hab mir nun die CPU-Auslastung und die größe der Auslagerungsdatei im Taskmanager angesehen. Die CPU-Auslastung schwankt zwischen 3% und ca. 25%. Die größe der Auslagerungsdatei ändert sich nicht, bleibt bei 300 MB....

Denke bei einer Auslastung von 25% müsste das Programm ohne Probleme laufen.

Das ich irgendwas schlecht Programmiert habe kann gut sein, da ich noch nicht sehr lange mit LabVIEW arbeite und noch über keinerlei Erfahrung verfüge.

Hat jemand evt. Erfahrungswerte woran es am ehesten liegen könnte bzw. was man sich zuerst anschauen sollte ?

Denke es ist relativ schwer irgendwelche Tipps zu geben ohne das eigentliche Programm zu kennen, es ist aber zu umfangreich um es hier hoch zu laden.

Ich arbeite in meinem "Haupt-VI" mit einer flachen Sequenz 5 Sequenzen nacheinander ab in denen 10 SubVI´s teilweise mehrfach aufgerufen werden.

Ich speichere die Datenstrings bzw. die berechneten Werte in 5 Textdateien ab. Dabei habe ich darauf geachtet, dass ich die Dateien nachdem ich die Werte ausgelesen oder abgespeichert habe sofort wieder schließe.

Es sind mehrere zeitabhängige Funktionen im Programm enthalten, so wird z.b. eine While-Schleife nur stündlich ausgeführt um die eingelesenen Werte über ein Schieberegister aufzuaddieren.
Hierbei vergleiche ich die aktuelle Systemzeit mit einer Konstanten um Timer- und Wartezeiten im Programm zu vermeiden.

Bin für jeden Tipp dankbar.

Gruß Flo
Diese Nachricht in einer Antwort zitieren to top
14.04.2009, 09:42
Beitrag #7

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Probleme mit Datenerfassung über serielle Schnittstelle (RS232)
' schrieb:Die CPU-Auslastung schwankt zwischen 3% und ca. 25%.
Ich bin der Meinung, das grobe Mittel sollte unter 10% liegen. Eine Auslastung von 25% ist schon sehr viel.

Zitat:Die größe der Auslagerungsdatei ändert sich nicht, bleibt bei 300 MB....
Ich meine hier den Hauptspeicherbedarf des Prozesses. Siehe in der Zeile des Prozesses.

Zitat:... die eingelesenen Werte über ein Schieberegister aufzuaddieren.
Das Verfahren der Array-Addition an sich kann zu Problemen führen. Array-Ersetzen an sich ist besser. Ich vermute allerdings, dass es nicht hieran liegt. (Sowas würde im Zeitbereich 50ms Auswirkunen haben, nicht bei Sekunden)

Ohne deine VIs zu sehen, kann man aber keine gute Hilfestellung geben.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Serielle Schnittstelle: Unterschied zwischen FIFO-Buffer und VISA-Buffer Exle 4 6.214 23.01.2019 08:07
Letzter Beitrag: Ratio
Bug Probleme mit GPIB Schnittstelle bei elektronischen Last (Hersteller: Zentro Elektrik) inpotron 1 3.369 28.06.2018 09:16
Letzter Beitrag: Freddy
  Serielle Schnittstelle hängt nach gewisser Zeit auf Kiesch 8 9.222 08.01.2018 11:06
Letzter Beitrag: Kiesch
  Serielle Schnittstelle bricht ab -cosmo- 7 6.730 28.09.2017 12:13
Letzter Beitrag: Lucki
  Servomex Messwerte auslesen über RS232/RS485 Chefkoch 6 8.326 18.07.2016 13:54
Letzter Beitrag: jg
  RS232 Messgerät Probleme ElJon 9 8.266 18.12.2015 11:30
Letzter Beitrag: ElJon

Gehe zu: