% PIPE FLOW TEMPERATURE CONTROL clear all ROLD=0.0;HOLD=0.0;SENSOR=ROLD; TARGET=5.0;LOAD=0.0;DUMP=10.0; X=0.5;Y=1.0;A=0.1;B=1.0;Z=1.0; WRONG=TARGET-SENSOR;SUM=0.0; NIT=5000;MIT=200;TIME=0.0; GP=1.2;GI=1.2;GD=0.3; BAND=10; DELT=0.0025; for IT=1:NIT TIME=TIME+DELT; if(IT>MIT) ... SENSOR=R(IT-MIT); end; ERROR=TARGET-SENSOR; RATE=(ERROR-WRONG)/DELT; CONTROL=GP*ERROR; CONTROL=CONTROL+GI*SUM; CONTROL=CONTROL+GD*RATE; if(abs(ERROR)DUMP) ... CONTROL=DUMP; end; if(CONTROL<0.0) ... CONTROL=0.0; end; ABC=Z*CONTROL-B*HOLD; XYZ=HOLD+LOAD-Y*ROLD; HNEW=HOLD+DELT*ABC/A; RNEW=ROLD+DELT*XYZ/X; T(IT)=TIME;R(IT)=RNEW; ROLD=RNEW;HOLD=HNEW; WRONG=ERROR; end; plot(T,R) xlabel('time') ylabel('volts') title('lab setup')