⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tesfunc.m

📁 Tennessee eastman 的Matalb仿真程序
💻 M
📖 第 1 页 / 共 5 页
字号:
	  
for I = 1:12
      XMV(I,1) = YY(I + 38,1);
      VCV(I,1) = XMV(I,1);
      VST(I,1) = 2.0;
      IVST(I,1) = 0;
end
  
      VRNG(1,1) = 400.00;
      VRNG(2,1) = 400.00;
      VRNG(3,1) = 100.00;
      VRNG(4,1) = 1500.00;
      VRNG(7,1) = 1500.00;
      VRNG(8,1) = 1000.00;
      VRNG(9,1) = 0.03;
      VRNG(10,1) = 1000;
      VRNG(11,1) = 1200.0;
      VTR = 1300.0;
      VTS = 3500.0;
      VTC = 156.5;
      VTV = 5000.0;
      HTR(1,1) = 0.06899381054;
      HTR(2,1) = 0.05;
      HWR = 7060;
      HWS = 11138;
      SFR(1,1) = 0.99500;
      SFR(2,1) = 0.99100;
      SFR(3,1) = 0.99000;
      SFR(4,1) = 0.91600;
      SFR(5,1) = 0.93600;
      SFR(6,1) = 0.93800;
      SFR(7,1) = 5.80000E-02;
      SFR(8,1) = 3.01000E-02;
      XST(1,1) = 0.0;
      XST(2,1) = 0.0001;
      XST(3,1) = 0.0;
      XST(4,1) = 0.9999;
      XST(5,1) = 0.0;
      XST(6,1) = 0.0;
      XST(7,1) = 0.0;
      XST(8,1) = 0.0;
      TST(1,1) = 45;
      XST(1,2) = 0.0;
      XST(2,2) = 0.0;
      XST(3,2) = 0.0;
      XST(4,2) = 0.0;
      XST(5,2) = 0.9999;
      XST(6,2) = 0.0001;
      XST(7,2) = 0.0;
      XST(8,2) = 0.0;
      TST(2,1) = 45;
      XST(1,3) = 0.9999;
      XST(2,3) = 0.0001;
      XST(3,3) = 0.0;
      XST(4,3) = 0.0;
      XST(5,3) = 0.0;
      XST(6,3) = 0.0;
      XST(7,3) = 0.0;
      XST(8,3) = 0.0;
      TST(3,1) = 45;
      XST(1,4) = 0.4850;
      XST(2,4) = 0.0050;
      XST(3,4) = 0.5100;
      XST(4,4) = 0.0;
      XST(5,4) = 0.0;
      XST(6,4) = 0.0;
      XST(7,4) = 0.0;
      XST(8,4) = 0.0;
      TST(4,1) = 45;
      CPFLMX = 280275;
      CPPRMX = 1.3;
      VTAU(1,1) = 8;
      VTAU(2,1) = 8;
      VTAU(3,1) = 6;
      VTAU(4,1) = 9;
      VTAU(5,1) = 7;
      VTAU(6,1) = 5;
      VTAU(7,1) = 5;
      VTAU(8,1) = 5;
      VTAU(9,1) = 120;
      VTAU(10,1) = 5;
      VTAU(11,1) = 5;
      VTAU(12,1) = 5;
	  
for I=1:12
      VTAU(I,1) = VTAU(I,1) / 3600;
end
  
      G = 1431655765;
      XNS(1,1) = 0.0012;
      XNS(2,1) = 18.000;
      XNS(3,1) = 22.000;
      XNS(4,1) = 0.0500;
      XNS(5,1) = 0.2000;
      XNS(6,1) = 0.2100;
      XNS(7,1) = 0.3000;
      XNS(8,1) = 0.5000;
      XNS(9,1) = 0.0100;
      XNS(10,1) = 0.0017;
      XNS(11,1) = 0.0100;
      XNS(12,1) = 1.0000;
      XNS(13,1) = 0.3000;
      XNS(14,1) = 0.1250;
      XNS(15,1) = 1.0000;
      XNS(16,1) = 0.3000;
      XNS(17,1) = 0.1150;
      XNS(18,1) = 0.0100;
      XNS(19,1) = 1.1500;
      XNS(20,1) = 0.2000;
      XNS(21,1) = 0.0100;
      XNS(22,1) = 0.0100;
      XNS(23,1) = 0.250;
      XNS(24,1) = 0.100;
      XNS(25,1) = 0.250;
      XNS(26,1) = 0.100;
      XNS(27,1) = 0.250;
      XNS(28,1) = 0.025;
      XNS(29,1) = 0.250;
      XNS(30,1) = 0.100;
      XNS(31,1) = 0.250;
      XNS(32,1) = 0.100;
      XNS(33,1) = 0.250;
      XNS(34,1) = 0.025;
      XNS(35,1) = 0.050;
      XNS(36,1) = 0.050;
      XNS(37,1) = 0.010;
      XNS(38,1) = 0.010;
      XNS(39,1) = 0.010;
      XNS(40,1) = 0.500;
      XNS(41,1) = 0.500;
	  
for I=1:20
      IDV(I,1)=0;
end
  
      HSPAN(1,1) = 0.2;
      HZERO(1,1) = 0.5;
      SSPAN(1,1) = 0.03;
      SZERO(1,1) = 0.485;
      SPSPAN(1,1) = 0;
      HSPAN(2,1) = 0.7;
      HZERO(2,1) = 1.0;
      SSPAN(2,1) = 0.003;
      SZERO(2,1) = 0.005;
      SPSPAN(2,1) = 0;
      HSPAN(3,1) = 0.25;
      HZERO(3,1) = 0.5;
      SSPAN(3,1) = 10;
      SZERO(3,1) = 45;
      SPSPAN(3,1) = 0;
      HSPAN(4,1) = 0.7;
      HZERO(4,1) = 1.0;
      SSPAN(4,1) = 10;
      SZERO(4,1) = 45;
      SPSPAN(4,1) = 0;
      HSPAN(5,1) = 0.15;
      HZERO(5,1) = 0.25;
      SSPAN(5,1) = 10;
      SZERO(5,1) = 35;
      SPSPAN(5,1) = 0;
      HSPAN(6,1) = 0.15;
      HZERO(6,1) = 0.25;
      SSPAN(6,1) = 10;
      SZERO(6,1) = 40;
      SPSPAN(6,1) = 0;
      HSPAN(7,1) = 1;
      HZERO(7,1) = 2;
      SSPAN(7,1) = 0.25;
      SZERO(7,1) = 1.0;
      SPSPAN(7,1) = 0;
      HSPAN(8,1) = 1;
      HZERO(8,1) = 2;
      SSPAN(8,1) = 0.25;
      SZERO(8,1) = 1.0;
      SPSPAN(8,1) = 0;
      HSPAN(9,1) = 0.4;
      HZERO(9,1) = 0.5;
      SSPAN(9,1) = 0.25;
      SZERO(9,1) = 0.0;
      SPSPAN(9,1) = 0;
      HSPAN(10,1) = 1.5;
      HZERO(10,1) = 2.0;
      SSPAN(10,1) = 0.0;
      SZERO(10,1) = 0.0;
      SPSPAN(10,1) = 0;
      HSPAN(11,1) = 2.0;
      HZERO(11,1) = 3.0;
      SSPAN(11,1) = 0.0;
      SZERO(11,1) = 0.0;
      SPSPAN(11,1) = 0;
      HSPAN(12,1) = 1.5;
      HZERO(12,1) = 2.0;
      SSPAN(12,1) = 0.0;
      SZERO(12,1) = 0.0;
      SPSPAN(12,1) = 0;
	  
for I=1:12
      TLAST(I,1)=0;
      TNEXT(I,1)=0.1;
      ADIST(I,1)=SZERO(I,1);
      BDIST(I,1)=0;
      CDIST(I,1)=0;
      DDIST(I,1)=0;
end
  
      TIME=0.0;
	  
%     TEFUNC(NN,TIME,YY,YP);
%     TEFUNCVAL = TEFUNC(NN,TIME,YY,YP)
%
% Substitution of TEFUNC for call statement. MWB
%
%                Tennessee Eastman Process Control Test Problem
% 
%                     James J. Downs and Ernest F. Vogel
% 
%                   Process and Control Systems Engineering
%                        Tennessee Eastman Company
%                               P.O. Box 511
%                           Kingsport,TN  37662
% 
% ************************************************************************
%
% 						Re-Written in Matlab 5.0 
%									by	
%								Martin Braun
%
%			Department of Chemical, Bio and Materials Engineering
%						Arizona State University
%
% ************************************************************************
%   Reference:
%     "A Plant-Wide Industrial Process Control Problem"
%     Presented at the AIChE 1990 Annual Meeting
%     Industrial Challenge Problems in Process Control,Paper #24a
%     Chicago,Illinois,November 14,1990
% 
%  Revised 4-4-91 to correct error in documentation of manipulated variables
% 
%  Subroutines:
% 
%     TEFUNC - Function evaluator to be called by integrator
%     TEINIT - Initialization
%     TESUBi - Utility subroutines, i=1,2,..,8
% 
% 
%   The process simulation has 50 states (NN=50).
%   Differences between the code and its description in the paper:
% 
%   1.  Subroutine TEINIT has TIME in the argument list.  TEINIT sets TIME
%       to zero.
% 
%   2.  There are 8 utility subroutines (TESUBi) rather than 5.
% 
%   3.  Process disturbances 14 through 20 do NOT need to be used in
%       conjunction with another disturbance as stated in the paper.  All
%       disturbances can be used alone or in any combination.
%  
%   Manipulated Variables
% 
%     XMV(1,1)     D Feed Flow (stream 2)            (Corrected Order)
%     XMV(1,2)     E Feed Flow (stream 3)            (Corrected Order)
%     XMV(1,3)     A Feed Flow (stream 1)            (Corrected Order)
%     XMV(1,4)     A and C Feed Flow (stream 4)
%     XMV(1,5)     Compressor Recycle Valve
%     XMV(1,6)     Purge Valve (stream 9)
%     XMV(1,7)     Separator Pot Liquid Flow (stream 10)
%     XMV(1,8)     Stripper Liquid Product Flow (stream 11)
%     XMV(1,9)     Stripper Steam Valve
%     XMV(1,10)    Reactor Cooling Water Flow
%     XMV(1,11)    Condenser Cooling Water Flow
%     XMV(1,12)    Agitator Speed
% 
%   Continuous Process Measurements
% 
%     XMEAS(1,1)   A Feed  (stream 1)                    kscmh
%     XMEAS(1,2)   D Feed  (stream 2)                    kg/hr
%     XMEAS(1,3)   E Feed  (stream 3)                    kg/hr
%     XMEAS(1,4)   A and C Feed  (stream 4)              kscmh
%     XMEAS(1,5)   Recycle Flow  (stream 8)              kscmh
%     XMEAS(1,6)   Reactor Feed Rate  (stream 6)         kscmh
%     XMEAS(1,7)   Reactor Pressure                      kPa gauge
%     XMEAS(1,8)   Reactor Level                         %
%     XMEAS(1,9)   Reactor Temperature                   Deg C
%     XMEAS(1,10)  Purge Rate (stream 9)                 kscmh
%     XMEAS(1,11)  Product Sep Temp                      Deg C
%     XMEAS(1,12)  Product Sep Level                     %
%     XMEAS(1,13)  Prod Sep Pressure                     kPa gauge
%     XMEAS(1,14)  Prod Sep Underflow (stream 10)        m3/hr
%     XMEAS(1,15)  Stripper Level                        %
%     XMEAS(1,16)  Stripper Pressure                     kPa gauge
%     XMEAS(1,17)  Stripper Underflow (stream 11)        m3/hr
%     XMEAS(1,18)  Stripper Temperature                  Deg C
%     XMEAS(1,19)  Stripper Steam Flow                   kg/hr
%     XMEAS(1,20)  Compressor Work                       kW
%     XMEAS(1,21)  Reactor Cooling Water Outlet Temp     Deg C
%     XMEAS(1,22)  Separator Cooling Water Outlet Temp   Deg C
% 
%   Sampled Process Measurements
% 
%     Reactor Feed Analysis (Stream 6)
%         Sampling Frequency = 0.1 hr
%         Dead Time = 0.1 hr
%         Mole %
%     XMEAS(1,23)   Component A
%     XMEAS(1,24)   Component B
%     XMEAS(1,25)   Component C
%     XMEAS(1,26)   Component D
%     XMEAS(1,27)   Component E
%     XMEAS(1,28)   Component F
% 
%     Purge Gas Analysis (Stream 9)
%         Sampling Frequency = 0.1 hr
%         Dead Time = 0.1 hr
%         Mole %
%     XMEAS(1,29)   Component A
%     XMEAS(1,30)   Component B
%     XMEAS(1,31)   Component C
%     XMEAS(1,32)   Component D
%     XMEAS(1,33)   Component E
%     XMEAS(1,34)   Component F
%     XMEAS(1,35)   Component G
%     XMEAS(1,36)   Component H
% 
%     Product Analysis (Stream 11)
%         Sampling Frequency = 0.25 hr
%         Dead Time = 0.25 hr
%         Mole %
%     XMEAS(1,37)   Component D
%     XMEAS(1,38)   Component E
%     XMEAS(1,39)   Component F
%     XMEAS(1,40)   Component G
%     XMEAS(1,41)   Component H
% 
%   Process Disturbances
% 
%     IDV(1,1)   A/C Feed Ratio, B Composition Constant (Stream 4)          Step
%     IDV(1,2)   B Composition, A/C Ratio Constant (Stream 4)               Step
%     IDV(1,3)   D Feed Temperature (Stream 2)                              Step
%     IDV(1,4)   Reactor Cooling Water Inlet Temperature                    Step
%     IDV(1,5)   Condenser Cooling Water Inlet Temperature                  Step
%     IDV(1,6)   A Feed Loss (Stream 1)                                     Step
%     IDV(1,7)   C Header Pressure Loss - Reduced Availability (Stream 4)   Step
%     IDV(1,8)   A, B, C Feed Composition (Stream 4)            Random Variation
%     IDV(1,9)   D Feed Temperature (Stream 2)                  Random Variation
%     IDV(1,10)  C Feed Temperature (Stream 4)                  Random Variation
%     IDV(1,11)  Reactor Cooling Water Inlet Temperature        Random Variation
%     IDV(1,12)  Condenser Cooling Water Inlet Temperature      Random Variation
%     IDV(1,13)  Reaction Kinetics                                    Slow Drift
%     IDV(1,14)  Reactor Cooling Water Valve                            Sticking
%     IDV(1,15)  Condenser Cooling Water Valve                          Sticking
%     IDV(1,16)  Unknown
%     IDV(1,17)  Unknown
%     IDV(1,18)  Unknown
%     IDV(1,19)  Unknown
%     IDV(1,20)  Unknown
% 
%
% =============================================================================
%        Function Evaluator
% 
%          Inputs:
% 
%            NN   = Number of differential equations
%            Time = Current time(hrs)
%            YY   = Current state values
% 
%          Outputs:
% 
%            YP   = Current derivative values
% 
%   MEASUREMENT AND VALVE COMMON BLOCK

global XMEAS XMV 
%    DISTURBANCE VECTOR COMMON BLOCK

global NN
	
XMNS = 0; % Initialization by MWB
% 	NOTE: I have included isd in the /PV/ common.  This is set
% 		non-zero when the process is shutting down.
     global  UCLR UCVR UTLR UTVR...
     XLR XVR ETR ESR...
     TCR TKR DLR ...
     VLR VVR VTR ...
     PTR PPR...
     CRXR RR RH ...
     FWR TWR QUR HWR UAR...
     UCLS UCVS UTLS UTVS...
     XLS XVS ETS ESS...
     TCS TKS DLS...
     VLS VVS VTS...
     PTS PPS...
     FWS TWS QUS HWS...
     UCLC UTLC XLC...
     ETC ESC TCC DLC...
     VLC VTC QUC...
     UCVV UTVV XVV...
     ETV ESV TCV TKV...
     VTV PTV...
     VCV VRNG VTAU...
     FTM...
     FCM XST XMWS...
     HST TST SFR...
     CPFLMX CPPRMX CPDH...
     TCWR TCWS...
     HTR AGSP...
     XDEL XNS...
     TGAS TPROD VST IVST;
	 global...
     ADIST...
     BDIST...
     CDIST...
     DDIST...
     TLAST...
     TNEXT...
     HSPAN...
     HZERO...
     SSPAN...
     SZERO...
     SPSPAN...
     IDVWLK;
     global...
     AVP BVP CVP...
     AH BH CH...
     AG BG CG...
     AV...
     AD BD CD...
     XMW;
	 
for I = 1:20
	if IDV(I,1) > 0
    	IDV(I,1) = 1;
	else
		IDV(I,1) = 0;
	end
end

IDVWLK(1,1)=IDV(8,1);
IDVWLK(2,1)=IDV(8,1);
IDVWLK(3,1)=IDV(9,1);
IDVWLK(4,1)=IDV(10,1);
IDVWLK(5,1)=IDV(11,1);
IDVWLK(6,1)=IDV(12,1);
IDVWLK(7,1)=IDV(13,1);
IDVWLK(8,1)=IDV(13,1);
IDVWLK(9,1)=IDV(16,1);
IDVWLK(10,1)=IDV(17,1);
IDVWLK(11,1)=IDV(18,1);
IDVWLK(12,1)=IDV(20,1);
for I = 1:9
	if TIME >= TNEXT(I,1);
	HWLK=TNEXT(I,1)-TLAST(I,1);
    SWLK=ADIST(I,1)+HWLK*(BDIST(I,1)+HWLK*(CDIST(I,1)+HWLK*DDIST(I,1)));
    SPWLK=BDIST(I,1)+HWLK*(2*CDIST(I,1)+3*HWLK*DDIST(I,1));
    TLAST(I,1)=TNEXT(I,1);
	% TESUB5(SWLK,SPWLK,ADIST(I,1),BDIST(I,1),CDIST(I,1),DDIST(I,1),...
	% TLAST(I,1),TNEXT(I,1),HSPAN(I,1),HZERO(I,1),SSPAN(I,1),SZERO(I,1),...
	% SPSPAN(I,1),IDVWLK(I,1));
	% TESUB5(S,SP,ADIST,BDIST,CDIST,DDIST,
	% TLAST,TNEXT,HSPAN,HZERO,SSPAN,SZERO,...
	% SPSPAN,IDVFLAG) "VAL" added to subroutine variables.  "I" changed to "It".
	% Substitution of TESUB5 for call statement. MWB
	S5 = SWLK;
	SP5 = SPWLK;
	ADISTVAL = ADIST(I,1);
	BDISTVAL = BDIST(I,1);
	CDISTVAL = CDIST(I,1);
	DDISTVAL = DDIST(I,1);
	TLASTVAL = TLAST(I,1);
	TNEXTVAL = TNEXT(I,1);
	HSPANVAL = HSPAN(I,1);
	HZEROVAL = HZERO(I,1);
	SSPANVAL = SSPAN(I,1);
	SZEROVAL = SZERO(I,1);
	SPSPANVAL = SPSPAN(I,1);
	IDVFLAGVAL = IDVWLK(I,1);
	It = -1;
    H5 = HSPANVAL * TESUB7(It) + HZEROVAL;
    S1 = SSPANVAL * TESUB7(It) * IDVFLAGVAL + SZEROVAL;
    S1P = SPSPANVAL * TESUB7(It) * IDVFLAGVAL;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -