一个液位PID控制程序。S7200+EM235,模拟量输入为1~5V,对模拟量采样(10次)去掉最大最小,再取平均。
采样值在VD10,滤波输出VW20,PID控制,P:VD112、I:VD120、D:VD124。
帮忙看看有什么不妥的,帮我改一下。很着急
Main
LD SM0.1
CALL SBR_0
SBR_0
LD SM0.0
MOVR VD50, VD104
MOVR DW#0.1, VD112
MOVR DW#0.1, VD116
MOVR DW#0.3, VD120
MOVR DW#0.0, VD124
MOVB B#100, SMB34
ATCH INT_0, B#10
ENI
INT_0
LD SM0.0
MOVW AIW0, VW12
LDW>= VW12, W#+0
MOVW W#+0, VW10
NOT
MOVW DW#+65535, VW10
LD SM0.0
+D VD10, VD14
INCW VW0
AW>= VW0, W#+1
MOVW VW12, VW30 //最大值
MOVW VW12, VW40 //最小值
LDW> VW12, VW30
MOVW VW12, VW30 //存最大值
LDW< VW12, VW40
MOVW VW12, VW40 //存最小值
LDW>= VW0, W#+10
CRETI
LD SM0.0
MOVW VW30, VW12
-D VD10, VD14 //减最大值
MOVW VW40, VW12
-D VD10, VD14 //减最小值
SRD VD14, B#3 //求8次平均
MOVW VW16, VW20 //存平均值
MOVW W#+0, VW0 //采样次数清零
MOVD DW#+0, VD14
LD SM0.0
ITD VW20, AC0
DTR AC0, AC0
/R DW#32000.0, AC0
MOVR AC0, VD100
LD SM0.0
PID VB100, B#0
LD SM0.0
MOVR VD108, AC0
*R DW#32000.0, AC0
ROUND AC0, AC0
DTI AC0, AC0
MOVW AC0, AQW0
MOVR AC0, VD60