读写数据、控制、校准寄存器都通过SDATA数据线串行读写。数据A/D转换完毕后DRDY置低,引起中断,由A0选择数据寄存器,RFS置低使读取数据有效,每次SCLK上升沿时读一位数据。读写时序如图4。
读数据程序代码:
RD: SETB A0;读数据寄存器
SETB TFS;
CLR RFS;置0使数据有效
CLR SCLK;
MOV R1,#3;
RDD: MOV R2, #8;
RDDD: SETB SCLK;时钟置高
MOV C,SDATA;读1位
CLR SCLK;
RLC A;
DJNZ R2,RDDD;是否读完1BYTE
MOV R0,A@;数据存入@R0区
INC RO;
DJNZ R1,RDD;
写控制寄存器程序代码:
WR: CLR A0;写控制寄存器
SETB RFS;
CLR TFS;使写入数据有效
CLR SCLK;
MOV R1,#3;
WRR: MOV R2,#8
MOV A@R3;由@R区读数据
WRRR: RLC A;
MOV SDATA,C;
SETB SCLK;时钟置高
CLR SCLK;
DJNZ R2,WRRR;是否写完1 BYTE
INC R3;
DJNZ R1;WRR;
3.4 PID调节器
PID控制结构如图5。Tr(K) 、T(K)分别为反应室温度的设定值和测量值。误差为PID输出的调节量。
本系统的PID调节器采用离散PID算法:
将式(1)两边进行Z变换,得PID调节器的传递函数:
式中e(k)——调节器输入偏差
Kp——对象放大倍数
KI——积分系数
KD——微分系数
系统的采样周期取1.2秒,输出u(k)为加热器在1.2秒采样时间内的加热器开启的时间,单位为毫秒。假设受控对象硫化室为一阶惯性加纯延迟环节,测出被控对象的临界增益和临界振荡周期,用Ziegler-Nicholes法整定PID参数,然后根据实验调节,求出符合实际的PID调节参数:
在实际的PID调节中,由于每次采样周期中U的输出最大为1200ms,所以在PID调节控制中需要一些输出限幅,以及对积分项的分离控制。
3.5 结果分析
温度控制结果如图6,设定的温度为160℃进入稳态后波动幅度不超过±0.3℃。从图中看出温度控制精度很高,图中每一行格距离为0.1℃,t1时刻为加料的时间,扰动较少,幅度小于1℃,稳态重建时间<45秒。并且系统的超调量很小,整个系统精度达到很高的要求。该硫化温控系统由我校仪器系和上海化工机械四厂联合开发,经济效益良好。