发布于 2005-02-02 15:23:39
0楼
1.在定时中断中进行PID运算。
2.定时中断时间必须大于等于飞轮系统的响应时间。假设飞轮系统在输入全速信号时,从0-7200需要1000ms,死区5%(变化小于5%的信号,系统不响应)则定时中断时间定为100ms,即每秒运算约10次。假设现在是10MS。此时间必须等于PID中的采样时间。
3.技巧:在定时中断中,用堆栈指令将每100ms采集的脉冲数压入堆栈,堆栈长度=10,并且立即将高速计数器清0,以免丢失脉冲!然后再配合FIFO指令对堆栈求和。得出每秒脉冲数。这样做的好处是每100ms就能知道每秒的脉冲数。
4.将满刻度值调整为每秒脉冲数。即7200 X 24 / 60 =2880
5.SV=所要求的每分钟转速 / 7200
6.PV=每秒脉冲数 / 2880
7.P=1~1.25
8.I=0.2分钟(PID采样时间 / I < 0.01)
9.D=0
我有一个实际的例子,是控制油马达的转速,每圈16个脉冲。效果不错。wyan@parker.com