Single PID Regler in Bascom
Hallo,
in der neuen Bascom Version 1.11.7.7 ist bei den Samples eine
Datei dabei die singlePiD.bas heißt. Habe das schon mal auf MCselec gesehen, müsste eine Rutine für einen PID Regler sein.
Meine Frage hat da jemand schon mal was mit gemacht??
würde mich doch sehr Interessieren, habe mich zwar damit schon etwas beschäftigt (PID-Regler) , aber so ganz ohne Hilfe werde ich es wohl nicht schaffen.
ist das eine Funktion in Bascom die ich aufrufen kann, oder ist das nur eine Beispielsdatei?.
Danke!!
Gruss Frank
Liste der Anhänge anzeigen (Anzahl: 2)
Code:
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600
Dim Y As Single
Dim Y1 As Single
Dim Yaus As Integer
Dim Xj0 As Single
Dim Xj1 As Single
Dim Xj2 As Single
Dim M0 As Single
Dim M1 As Single
Dim M2 As Single
Dim Ist As Integer
Dim Soll As Integer
Dim A As Single
Dim B As Integer
Const Q0 = 13.01
Const Q1 = -25.5
Const Q2 = 12.5
Config Portb = Output
Config Timer1 = Timer , Prescale = 8
Enable Interrupts
On Timer1 Zeit
Config Adc = Single , Prescaler = Auto , Reference = Off
Config Pinc.0 = Input 'Istwert
Config Pinc.1 = Input 'Sollwert
Portc.0 = 1
Portc.0 = 1
Start Adc
Xj0 = 0
Xj1 = 0
Xj2 = 0
Y = 0
Timer1 = 55536
Enable Timer1
For B = 0 To 100 Step 1
Ist = 0
Soll = 0
Waitms 10
Next
Do
Ist = 0
Soll = 1
Loop
Zeit:
Timer1 = 55536
Xj0 = Soll - Ist
M0 = Q0 * Xj0
M1 = Q1 * Xj1
M2 = Q2 * Xj2
Y = Y1 + M0
Y = Y + M1
Y = Y + M2
Xj2 = Xj1
Xj1 = Xj0
Print Y
Y1 = Y
Y = 0
Return
Hier mal meine Version eines PID Regler mit einem Verschiebealgorhytmus. Problem ist das es nach Regeltätigkeit zu einer bleibenden Abweichung kommt. Muss durch den Schritt Y = Y1 + M0 kommen da es immer der letzte Stellwert ist der die Abweichung ist.
Für die Einstellung mit kp und so bitte folgende Formle benutzen:
[/img]
Die Grunde liegende Formel ist so abgeleitet:
Liste der Anhänge anzeigen (Anzahl: 1)
Nun ja die Formel ist ja aus der Allgemeine Gleichung eines PID-Reglers abgeleitet. In Form des Verschiebealgorhytmuses hat sie den Vorteil, dass nur 3 Multiplikationen vorkommen und das bischen addieren und subtrahieren. Das tut dem Microprozessor nicht sonderlich weh.
Kannst dir ja spasseshalber die Formel mal in Excel nachbauen und eine Sprungantwort erstellen.
Mit dem Umkopieren der Variablen muss ich mir morgen mal anschauen kann da jetzt keinen Fehler erkennen. Die Müssen ja erst nach der ganzen Rechnerei umkopiert werden. Allein das ich die letzen drei Regelabweichungen in die Formel einbeziehe und unterschiedlich gewicht hab ich schon ein D-Anteil drin. Aber schau dir mal die Sprungantwort an. Die ist aus Excel, aber der MP spuckt genau so eine auch über RS232 aus.
Gruß Johann!
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal der Graph wo nach einiger Zeit die Regelabweichung e wieder null wird, sprich die Situation wo der Stellwert des Reglers die Regelabweichung ausgesteuert hat. Das einzigste was passiert, ist dass der Stellwert Konstant bleibt (wie bei einem reinen P-regler) obwohl keine Regelabweichung vorhanden ist.
Gruß Johann!