Temperaturregelung über RS232 und PWM - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Temperaturregelung über RS232 und PWM (/Thread-Temperaturregelung-ueber-RS232-und-PWM) |
Temperaturregelung über RS232 und PWM - tegabluexx - 26.08.2014 09:52 Hallo Leute! Ich bin blutiger LabVIEW Anfänger und soll für die Firma gleich ein, für mich riesiges Programm schreiben und komme leider überhaupt nicht zurecht. Vielleicht könnt ihr mir ja helfen da ich vollkommen verzweifelt bin. Ich beschreibe euch mal kurz den Ablauf des Programms: Es sollen über eine RS232-Schnittstelle die Temperaturwerte von einer beheizten Kammer, dessen beheizter Tür und der beheizten Ablage ausgelesen werden. Diese aktuellen Temperaturwerte sollen dann als IST-Wert an eine Temperaturregelung (momentan benutze ich nur einen P-Regler) übergeben werden. Der Regler berechnet aus der Regeldifferenz und der eingestellten Verstärkung den neuen Ausgangswert Y und dieser soll als PWM-Signal ausgegeben werden um das jeweilige Heizelement über die PWM zu beschalten. Dar das Programm aus einem C-Code nachgebaut werden soll muss ich für die while schleife eine zeit von 250ms wählen. Eigentlich funktioniert das Programm auch soweit, nur die Antworten sind nicht wie erwartet. Könnt ihr mir vielleicht Helfen und sagen ob der Aufbau überhaupt richtig ist? Ich bin wirklich am verzweifeln! RE: Temperaturregelung über RS232 und PWM - GerdW - 26.08.2014 10:06 Hallo tega, häng das VI doch mal in LV2011 an. Wie wäre es denn mit einem PI-Regler? Bei Heizungen in größeren Anlagen lässt sich I doch meist relativ einfach abschätzen… RE: Temperaturregelung über RS232 und PWM - tegabluexx - 26.08.2014 10:21 Hi! Einen PI darf ich leider nicht nehmen. Es muss leider ein P verwendet werden. Kurze frage wie speicher ich denn von 2013 auf 2011? Ich bin leider absolut unerfahren RE: Temperaturregelung über RS232 und PWM - GerdW - 26.08.2014 10:22 Datei-Menü -> "für vorige Version speichern"… RE: Temperaturregelung über RS232 und PWM - tegabluexx - 26.08.2014 10:23 Ich glaube das ist 2011 RE: Temperaturregelung über RS232 und PWM - GerdW - 26.08.2014 10:36 Hallo tega, was für ein Verhau an lokalen Variablen… Bitte erst einmal aufräumen: - Schleifen zusammenfassen (z.B. die beiden Sollwert-Schleifen und die beiden P_Wert-Schleifen) - alle komischen Rechnungen für ScanPeriod als Konstante vorgeben und dabei den korrekten Datentyp U32 verwenden - Wenn dein per RS232 angebundenes Gerät mit TermChar arbeitet, dann schmeiß BytesAtPort aus dem VI… - In dem Zusammenhang: die Stringkonstante mit dem Befehl fürs Gerät auf "\-Code"-Anzeige umstellen und das "\r" korrigieren… - Wenn du keine (korrekte) Antwort vom Gerät bekommst, schreibst du fehlerhafte Werte (meist Nullen) in deine Anzeige. Das kann so in einem Regler nicht gewollt sein… - lokale Variablen soweit wie möglich durch Drähte ersetzen… Wozu eine Simulationsschleife, um den P-Regler zu realisieren? Warum nicht einfach mit "normaler" Mathematik rechnen - oder gleich den PID-Regler aus dem PID-Toolkit verwenden? Du hast auch noch kein korrektes Gain eingestellt - oder passt der Defaultwert von "1" so gut? Falls dein DAQ-Device entsprechende CTR zur Verfügung stellt, kann ich diese zur Ausgabe des PWM-Signals empfehlen… RE: Temperaturregelung über RS232 und PWM - tegabluexx - 26.08.2014 11:56 Also ich habe erstmal soweit aufgeräumt wie ich konnte. Den Aufbau der RS232 musste ich so lassen, da die angeschlossene Anlage schon sehr alt ist und nur so korrekte Werte ausgibt. Soweit funktioniert es auch. Die Simulationsschleife des P-Regler und der Temperaturwerte von 37,5 auf 37 ist dazu gedacht, dass ich das Verhalte der anlage bei einer Temperaturänderung von +/- 0,5 Grad beobachten möchte (2min 37,5 dann wieder 18min 37 und dann wieder von vorne). Die Schleife des P-Regler dient dazu nach 20min(einen Durchlauf) den P Wert um den Faktor 0,9 zu teilen. Kann ich das auch direkt mit dem PID? Die ganzen lokalen Variablen habe ich deshalb verwendet, weil ich keine andere möglichkeit kenne die Werte von einer laufenden while Schleife in eine andere laufende while Schleife zu übergeben. Mein Hauptbroblem liegt in der Ausgabe des PWM Signal. Ich bin mir nicht sicher ob es so richtig ist. Kannst du mir nochmal eine Featback zu dem jetzigen Programm geben? Ich bin wirklich dankbar für jede Info! RE: Temperaturregelung über RS232 und PWM - GerdW - 26.08.2014 12:25 Hallo tega, ich habe mal etwas um-/aufgeräumt, siehe Anhang. Ich habe noch Schleifen zusammengefasst und die Simu-Schleife durch eine normale ersetzt. (Ich halte den BasicPID aus dem Toolkit immer noch für besser geeignet…) Was mir dabei auffiel: - Du erstellst einen DAQmxTask mit (lt. Voreinstellung) nur einem AO-Kanal. Ausgeben willst du aber 2 (oder sogar 3) Waveforms parallel… - Deine RS232-Schleife kann immer noch Nullen in die Ist-Werte schreiben… - Du hast eine fette RACE-CONDITION bei deiner STOP-Variablen… RE: Temperaturregelung über RS232 und PWM - tegabluexx - 26.08.2014 12:27 Ich vergas bezüglich der Hardware, dass ich nur ein NI cDAQ-9174 und ein analoges Ausgangsmodul NI9264 habe. RE: Temperaturregelung über RS232 und PWM - tegabluexx - 26.08.2014 13:11 Hallo Gerd, erstmal vielen, vielen Dank für deine Hilfe. Ich gucke mir das Programm gerade an und teste es an der Hardware. Zu deinen Punkten: - Du erstellst einen DAQmxTask mit (lt. Voreinstellung) nur einem AO-Kanal. Ausgeben willst du aber 2 (oder sogar 3) Waveforms parallel… - Deine RS232-Schleife kann immer noch Nullen in die Ist-Werte schreiben… - Du hast eine fette RACE-CONDITION bei deiner STOP-Variablen… muss ich gestehen, dass ich nur nach Vorlagen aus dem Netz gearbeitet habe. Ich bin mir über diese Fehler bisher nicht bewusst gewesen. Sollte oder kann ich denn dort noch etwas ändern? Auf alle fälle nochmal vielen Dank und ich hoffe ich darf dich noch weiter Fragen |