发表于:2005/8/5 8:05:00
#0楼
大家好:
我是个新人,对西门子的东西知道的不太多,在工程中用到PID算法,可是输出值和实际值有很大的偏差,工程的控制要求是:
1.模拟量温度输入AIW0(0-50℃)
2.确定控制温度范围在22℃
3.PID输出值AQW0给变频器
4.直接取实际温度的换算作为过程变量
5.设定SPn=0.44
6.增益KC=0.22
7.采样时间TS=0.1秒
8.积分时间TI=30分
9.微分时间TD=0
以下是我做的程序:(STL)
主程序:
LD SM0.0
CALL SBR_0
子程序:
1
LD SM0.1
MOVR DW#0.44, VD104
MOVR DW#0.22, VD112
MOVR DW#0.1, VD116
MOVR DW#30.0, VD120
MOVR DW#0.0, VD124
MOVB B#100, SMB34
ATCH INT_0, B#10
ENI
2
LD SM0.0
ITD AIW0, AC0
DTR AC0, AC0
/R DW#32000.0, AC0
MOVR AC0, VD100
3
LD I0.0
PID VB100, B#0
4
LD SM0.0
MOVR VD108, AC0
*R DW#32000.0, AC0
ROUND AC0, AC0
DTI AC0, AC0
MOVW AC0, AQW0
希望有经验的哥哥们指导指导,小弟在这里先作揖了.
我是个新人,对西门子的东西知道的不太多,在工程中用到PID算法,可是输出值和实际值有很大的偏差,工程的控制要求是:
1.模拟量温度输入AIW0(0-50℃)
2.确定控制温度范围在22℃
3.PID输出值AQW0给变频器
4.直接取实际温度的换算作为过程变量
5.设定SPn=0.44
6.增益KC=0.22
7.采样时间TS=0.1秒
8.积分时间TI=30分
9.微分时间TD=0
以下是我做的程序:(STL)
主程序:
LD SM0.0
CALL SBR_0
子程序:
1
LD SM0.1
MOVR DW#0.44, VD104
MOVR DW#0.22, VD112
MOVR DW#0.1, VD116
MOVR DW#30.0, VD120
MOVR DW#0.0, VD124
MOVB B#100, SMB34
ATCH INT_0, B#10
ENI
2
LD SM0.0
ITD AIW0, AC0
DTR AC0, AC0
/R DW#32000.0, AC0
MOVR AC0, VD100
3
LD I0.0
PID VB100, B#0
4
LD SM0.0
MOVR VD108, AC0
*R DW#32000.0, AC0
ROUND AC0, AC0
DTI AC0, AC0
MOVW AC0, AQW0
希望有经验的哥哥们指导指导,小弟在这里先作揖了.