Warum ist die Geschwindigkeit, mit der mein USB-COM-Port Daten liest, abhängig vom angeschlossenen Laptop?

362
James

Zusammenfassung

Ich lese serielle Daten über einen USB-Anschluss. Wenn der Laptop aufgeladen wird, erhält der COM-Anschluss etwa 60 Updates pro Sekunde. Wenn der Laptop nicht aufgeladen wird, erhält der COM-Anschluss etwa 1 Update pro Sekunde.


Hintergrund (Ich bin nicht sicher, welche Informationen hilfreich sind)

Ich arbeite an einem Projekt, bei dem ein Satz Sensoren mit einem Mikroprozessor kommuniziert und der Mikroprozessor an einen Laptop angeschlossen ist. Da ich die Daten für die Echtzeitsteuerung benötige, ist die Rate, mit der der Laptop Informationen vom Mikroprozessor erhält, wichtig.

In der Regel konnte ich pro Sekunde etwa 60 Updates vom Mikroprozessor erhalten. Ich bin jedoch oft ohne offensichtlichen Grund gelegentlich mit Verlangsamung konfrontiert. Heute trat eine dieser Verlangsamungen auf und ich erkannte, dass, wenn der Laptop nicht aktiv aufgeladen wurde, die Updates pro Sekunde sehr langsam waren, aber wenn der Laptop aufgeladen wurde, er die Updates mit voller Geschwindigkeit erhielt.

Beachten Sie, dass der Mikroprozessor nicht vom Laptop mit Strom versorgt wird.

Edit 1: Mein Energieplan ist auf ausgeglichen eingestellt.

Edit 2: Ich habe die folgenden Änderungen vorgenommen, um die Leistung zu verbessern

  1. Ich setze meine kritischen Prozesse auf Echtzeit-Priorität
  2. Setze meinen Energieplan auf Hochleistung
  3. Ich gab ziemlich schnell Daten an ein Konsolenfenster aus, sodass der Konsolendruck verringert wurde
  4. Ich habe den USB-selektiven Suspend deaktiviert
  5. Zuvor hatte ich den Latenzzeitgeber für den COM-Port auf 1 ms und den Empfang (Bytes) auf 128 geändert, um Kommunikationsprobleme mit diesem Gerät zu beheben.

Ich dachte, diese hätten das Problem behoben, aber nachdem sie einige Minuten gelaufen war, kam es wieder zu einer Verlangsamung.

Wenn der Task-Manager den Task-Manager ordnungsgemäß ausführt, beträgt er etwa 50% und der Speicherverbrauch etwa 50%. Als die Verlangsamung auftrat, sank die CPU-Auslastung auf etwa 25%. Die Speicherauslastung blieb unverändert.

Es sah so aus, als ob die Anzahl der Threads und Handles, die im Task-Manager angezeigt werden, im Laufe der Zeit stetig zunahm, bis zu 4000 Threads und 98000 Handles. Als ich meine Programme schloss, sank die Thread-Anzahl auf ca. 3000 und die Anzahl der Handles auf ca. 90.000.

COM-Port-Einstellungen

Bearbeiten Sie 3:

Ich ging ins BIOS und änderte Intel Speedstep in disabled und C-States-Control in Deaktiviert. Dies schien nichts zu beheben. Ich habe dies auf Empfehlung dieser Webseite getan: http://smallbusiness.chron.com/prevent-drops-cpu-speed-70828.html

Edit 4: Ich habe Docklight verwendet, um zu bestätigen, dass der Mikroprozessor Informationen schnell genug sendet. Das Problem liegt also definitiv am Ende des Laptops

2
Haben Sie überprüft, dass Ihre Energieplankonfiguration richtig eingestellt ist? Wenn die Anwendung, die die Aktualisierungen empfängt, an die Leistung der CPU gebunden ist, könnte der falsche Energieplan erklären, was Sie beobachtet haben. Geben Sie bei einem Update Ihrer Frage alle erforderlichen Informationen an. Ramhound vor 5 Jahren 0
Ramhound, mein Kraftplan ist auf Gleichgewicht eingestellt. Wenn Sie online schauen, kann dies zu Problemen führen, wenn hohe Anforderungen an die CPU gestellt werden. Wie würde ich wissen, ob die CPU-Auslastung beim Ausführen der Anwendung angezeigt wird, wenn sie an die Leistung der CPU gebunden ist? (Ich bin momentan zu Hause und werde das Programm erst morgen ausführen) James vor 5 Jahren 0
Haben Sie versucht, Ihren Energiesparplan auf "maximale Leistung" einzustellen oder wie auch immer der Name lautet? Jamie Hanrahan vor 5 Jahren 0
Noch nicht, Jamie, wusste nicht, dass dies ein Faktor sein könnte, bis Ramhound erwähnt hat. Wenn ich morgen im Labor ankomme, werde ich definitiv testen und Bericht erstatten. Könnte die Ursache sein, aber ich weiß es noch nicht. Vielen Dank. James vor 5 Jahren 0

0 Antworten auf die Frage