Programm hakt bei sereiller Kommunikation
Sehr geehrte Gemeinde,
ich brüte hier über einem sehr sporadisch auftretendem Problem, das mich langsam in den Wahnsinn treibt.
Folgendes: Ich kommuniziere in dem Programm mit 3 seriellen Schnittstellen. Diese Schnittstellen funktionieren für sich gesehen eigentlich ganz normal und befinden sich alle in derselben While-Schleife.
Nur, wenn man sich die CPU last parallel betrachtet, tritt immer wieder der Fehler auf, dass diese plötzlich und unerwartet in den Keller sinkt und das Programm zu stehen scheint. Näher eingegrenzt tritt der Fehler wiederholt bei ein und derselben Stelle auf. Ich bekomme ständig einen Timeout Fehler bei einer Schreibe- und Leseoperation.
Ich führe auf dem einen Port ständig Lese- und Schreiboperationen aus, d.h. ich sende dem Gerät, in diesem Fall ein Laser, einen Operationscode und warte auf eine Antwort. Diese Kommunikation ist seriell aufgebaut, also schreiben, lesen, schreiben, lesen... usw.
Der Fehler ist nicht zeitlich einzugrenzen, manchmal funktioniert die Kommunikation 2 Std. dann wieder nur 20 Minuten am Stück.
Die Timeout Zeit ist bereits auf 10 sek. gestellt, was eigentlich keine Rolle spielen darf, da sie gesamte Schreibe- und Leseschleife keinesfalls langsamer als 100 ms sein darf und es auch nicht ist, da der Port mit 57600 baud agiert.
Hat hier jemand eine Idee, wie man das Problem lösen kann, da es sich hierbei um eine sicherheitskritische Opreation handelt.
Können andere Operationen in dieser While-Schleife vielleicht auslöser sein. Es befindet sich nämlich außerdem noch eine DAQ-Funktionalität in der Hauptschleife, die allerdings nur Überwachungscharakter hat.
Das Programm hochzuladen stellt sich als schwierig heraus, da es sehr umfangreich ist.
Gruß Laserfuzzi
Hat irgendeiner eine Idee, woran das liegen kann. Bin über jede Hilfe dankbar.
|