@chrissyPu:
Hi!
> Du fängst viele unsinnige Nutzereingaben merkwürdig ab (z.B. in den einzelnen Haus-Schleifen)
Nein. Die Fenster können von verschiedenen Stellen aus gesteuert werden. Z.B. von den zentralen Tastern und vom Regler. Deshalb muß ich eine gleichzeitige Ansteuerung von "Auf" und "Zu" unbedingt vermeiden!
> Warum hast Du eigentlich Waits in Deinen Schleifen? ... (BTW: Wie bedienst du das ganze? Wenn du direkt das FP des FPGA bedienst und nicht über das RT-Target ist die Performanz natürlich schlecht, was Deine Wartezeiten angeht...)
Der FPGA wird mittels frontpanel communication durch das RT-VI gesteuert, wo z.B. die Regler laufen. Ohne die Waits geht dar garnichts (race conditions)! Und das Problem existiert auch allein auf der Ebene "DigIn -> FPGA -> DigOut"!
> Da Du eigentlich 6 mal dasselbe hast, würde ich mir überlegen, die Ein- und Ausgaben in ein Array zu packen.
Das wäre zu komplex. Ich habe eine ganze Menge Kram pro Haus programmiert, da werden insges. 6 cRIO-Module bedient, und ich müßte dann irgendwie die Kanäle der I/O-Nodes in den Schleifen umschalten (weiß garnicht, ob das geht). Außerdem hätte ich durch die Schleife keine Parallelität mehr, und da gibt es auch ein paar noch zeitkritische Operationen, wie z.B. das Erfassen von schnellen Inkrementalgebern.
- Generell könnte man eine Programmstruktur überlegen, die sich an einer SPS orientiert: Einlesen aller Eingänge, Verarbeiten, Ausgabe. Da der FPGA für diese boolschen Operationen deutlich schneller als Nutzer und Temperatur ist, sollte man damit deutlich einfacher programmieren können.
Verstehe ich nicht!? Genau das passiert hier doch.
- FPGAs sind m.E. nicht so die richtigen Targets für User-Interaktion, Temperaturregelung m.E. auch nicht wirklcih zeitkritisch durch die großen Zeitkonstanten. Daher vielleicht mal überlegen, ob eine andere hardware-Basis das ganze nicht einfacher macht (Rechner mit Event-Struktur, State-Machine etc.)
Nein - die Hardware hat in diesem Projekt schon ihre Berechtigung. Der FPGA arbeitet ohne sichtbares Frontpanel "unter" dem RT-VI. Die Temperaturregelung ist hier wahrlich der langsamste Vorgang, der sicher keinen FPGA benötigt. Aber wie gesagt, das hier ist nur ein kleiner Ausschnitt des Projekts!
Du meinst, das Problem könnte in den lokalen Variablen liegen? Ich könnte natürlich mal mit globalen Variablen testen, wobei mir das irgendwie nicht logisch erscheint - das heißt aber nix
Grüße,
Roland
@GerdW:
Hallo,
> Wenn es der FPGA sein
muss: - ich würde die "Häuser" zusammenfassen, der FPGA kann bequem mit INTs rechnen und auf Byte-Ports der DO-Karte schreiben ("DO0-7" z.B.).
Ja, muß (siehe oben). Aber abgesehen davon, ob ich jetzt Bits oder Bytes zwischen den Schleifen kommuniziere - wo liegt das Problem?
> Ansonsten: Mach doch das Ganze direkt auf dem cRIO.
Meinst Du RT? Ich brauche beides, RT+FPGA.
Ich frage mich halt, wo es im FPGA eine Verzögerung gibt. Ob's an den Variablen liegt, muß ich mal testen. Leider steht das cRIO nicht auf meinem Schreibtisch...
Grüße
Roland