RE: Erzeuger/Verbraucher
In die obere Schleife möchte ich kein Wait reinmachen.
Im eigentlichen Programm welches sehr komplex ist, gibt es keine Erzeuger Verbraucher Struktur.
Dort gibt es eine riesige While Schleife. Irgendwo dort wird dann ein Wert von der Messkarte gelesen
und an einen Regler weitergegeben. Der Regler benötigt spätestens nach 20ms einen neuen Wert,
ansonsten wir die Prüfmaschine falsch geregelt. Die Prüfmaschine erzeugt nämlich alle 20ms einen neuen
Wert.
In dem komplexen Code wird kein Wait o.ä. verwendet. Bei dem Rechner dort handelt es sich um einen
Windows XP Rechner mit nur einem Prozessor der nur einen Kern hat.
Wenn kein Diagramm gezeichnet wird, dann funktioniert das Programm gut und der Regler regelt die Prüfmaschine richtig.
Wird aber ein Diagramm gezeichnet so gehen Werte irgendwo verloren und die Maschine regelt falsch.
Vermutlich nimmt das Zeichnen des Diagramms mehr als 20ms in Anspruch, so dass der Regler einen Wert verpasst.
Daher wollte ich versuchen ein Erzeuger Verbraucher System zu erstellen.
Im Erzeuger System werden die Werte aus der Messkarte gelesen und der Regler erhält den akutellen Wert.
Ich kann kein Wait da reinsetzen, da der Regler ununterbrochen arbeiten muss.
Die Zeichnung des Diagramms kann ruhig eine halbe Sekunde oder vielleicht auch ne Sekunde verzögert erfolgen.
Darum verwende ich in der sehr stark vereinfachten Version, die ich hier hochgeladen habe im Erzeuger
kein Wait und im Verbraucher ein Wait. Das Wait im Verbraucher soll dafür sorgen, dass der Regler der noch
in die Erzeuger Schleife kommt fast die gesamte Aufmerksamkeit der CPU erhält.
Ist das ein falscher Ansatz den ich mit der Erzeuger Verbraucher Schleife grad wähle um das Problem zu lösen?
|