发布于 2005-05-27 21:09:00
0楼
我写了一个PID,在主程序中随意调用,请朋友互相探讨一下:
NT1://增量式PID_OUT1=PID_P+PID_I+PID_D=Kp*(e-e1) + Kp*T/Ti *e + Kp*Td/T*( e-2*e1+e2)
LD SM0.0
MOVR #SP, AC0
-R #PV, AC0
MOVR AC0, #e //e=SP-PV
MOVR #Kp, AC0
*R #T, AC0
/R #Ti, AC0
MOVR AC0, #KI //KI=Kp*T/Ti
MOVR #Kp, AC0
*R #Td, AC0
/R #T, AC0
MOVR AC0, #KD //KD=Kp*Td/T
MOVR #e, AC0
-R #e1, AC0
*R #Kp, AC0
MOVR AC0, #PID_P //PID_P=Kp*(e-e1)
MOVR #KI, AC0
*R #e, AC0
MOVR AC0, #PID_I //PID_I=KI*e
MOVR #e, AC0
-R #e1, AC0
-R #e1, AC0
+R #e2, AC0
*R #KD, AC0
MOVR AC0, #PID_D //PID_D=KD*(e-2*e1+e2)
+R #PID_P, AC0
+R #PID_I, AC0
MOVR AC0, #PID_OUT1 //PID_OUT1=PID_P+PID_I+PID_D
MOVR #e, #e1
MOVR #e1, #e2 //为下次计算作准备