主程序
LD SM0.1
CALL SBR_0:SBR0
子程序
Network 1 // 网络标题
LD SM0.0
MOVR 0.75, VD104
MOVR 0.0, VD112 //增益为0
MOVR 0.1, VD116
MOVR 0.5, VD120
MOVR 0.0, VD124 //微分为0
MOVB 100, SMB34
ATCH INT0, 10
ENI
中断程序
Network 1 // 网络标题
LD SM0.0
ITD AIW0, AC0
DTR AC0, AC0
/R 32000.0, AC0
MOVR AC0, VD100
Network 2
LD I0.0
PID VB100, 0
Network 3
LD SM0.0
MOVR VD108, AC0
*R 32000.0, AC0
ROUND AC0, AC0
DTI AC0, AC0
MOVW AC0, AQW0
上面的程序应是个简单的PID控制程序,现在将P和D设置为0,只看看积分的作用:
若输入VD100 >VD 104, 那么由于积分的作用,则VD108将慢慢为0;
若输入VD100 这个效果我在PID向导内是可以实现的。
但上面的程序,用状态表监控,发现VD104 不断变化, 而且输出VD108也慢慢稳定于某个值,而不是0,或者1。
如果强制使VD104=0.75, 那程序运行就正确了, 慢慢稳定于0或者1.
想了几天,也没有明白, 请高手指点一下,为何会是这样的?