-
Notifications
You must be signed in to change notification settings - Fork 0
/
ONAN.m
96 lines (80 loc) · 3.9 KB
/
ONAN.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
function [HST_max,TOT_max,AEQ,HST,TOT]=ONAN(PUL,AMB)
%% This function calculates thermal mode for ONAN power transformer per IEC 60076-7
% Input data:
% PUL - profile of transformer loading in pu
% AMB - profile of ambient temperature, degC
% Output data:
% HST_max - maximal hot-spot temerature of winding, degC
% TOT_max - maximal top-oil temperature, degC
% HST - profile of hot spot temperature, degC
% TOT - profile of top oil temperature, degC
% AEQ - ageing equivalent, pu relatve to normal ageing (1pu)
%% Constants
% Thermal characteristics of ONAN power transformer per IEC60076-7
delta_theta_or = 52; % Top-oil (in tank) temperature rise in steady state at rated losses (no-load losses + load losses),K
delta_theta_hr = 26; % Hot-spot-to-top-oil (in tank) gradient at rated current, K
tao_0 = 210; % Average oil time constant, min
tao_w = 10; % Winding time constant, min
R = 6; % Ratio of load losses at rated current to no-load losses
x = 0.8; % Exponential power of total losses versus top-oil (in tank) temperature rise (oil exponent)
y = 1.3; % Exponential power of current versus winding temperature rise (winding exponent)
k11 = 0.5; % Thermal model constant
k21 = 2; % Thermal model constant
k22 = 2; % Thermal model constant
%% Solving the difference equations
NPUL=length(PUL); % Finding the length of load data
NAMB=length(AMB); % Finding the length of ambient temperature data
% Checking that input data is in minute format
if NPUL==1440 && NAMB==1440
% do nothing
elseif NPUL==24 && NAMB==24
PUL=Convert2minute(PUL); % Convert loading data to minute format
AMB=Convert2minute(AMB); % Convert amb. temperature data to minute format
elseif NPUL==1440 && NAMB==24
AMB=Convert2minute(AMB); % Convert amb. temperature data to minute format
elseif NPUL==24 && NAMB==1440
PUL=Convert2minute(PUL); % Convert loading data to minute format
else
error('Check the length of input data')
end
% Change the variables name
K=PUL;
theta_a=AMB;
Dt=1;% time step 1 minute
% Although the system may not strictly be in the steady state at the start of a calculation period,
% this is usually the best one can assume, and it has little effect on the result
K_0=K(1);
theta_a_0=theta_a(1);
theta_0 = ((1+K_0.^2.*R)./(1+R)).^x.*delta_theta_or+theta_a_0; % top-oil temperature
delta_theta_h1 = k21*K_0.^y*delta_theta_hr; % Hot-spot-to-top-oil (in tank) gradient at start
delta_theta_h2 = (k21-1)*K_0.^y*delta_theta_hr; % Hot-spot-to-top-oil (in tank) gradient at start
Loss_of_life = 0;
% Create an array of hot-spot temperature and top-oil temperature
HST=NaN(length(K),1);
TOT=NaN(length(K),1);
% Solving difference (not differentiate!) equations: iterative approach (see
% Annex C in IEC 60076-7 for equations)
for i=1:1:length(K)
D_theta_0 = (Dt./(k11.*tao_0)).*((((1+K(i).^2.*R)./(1+R)).^x).*(delta_theta_or)-(theta_0-theta_a(i)));
theta_0 = theta_0+D_theta_0;
D_delta_theta_h1 = Dt./(k22.*tao_w).*(k21.*delta_theta_hr.*K(i).^y-delta_theta_h1);
delta_theta_h1 = delta_theta_h1+D_delta_theta_h1;
D_delta_theta_h2 = Dt./(1./k22.*tao_0).*((k21-1).*delta_theta_hr.*K(i).^y-delta_theta_h2);
delta_theta_h2 = delta_theta_h2+D_delta_theta_h2;
delta_theta_h = delta_theta_h1-delta_theta_h2;
HST(i,:) = theta_0+delta_theta_h; % hot spot temperature
TOT(i,:)=theta_0; % top oil temperature
end
% Calculating ageing
DL=NaN(length(K),1);
for i=1:1:length(HST)
% DL(i,:) = (exp((15000./(110+273)-15000./(HST(i)+273)))).*Dt;
DL(i,:) = (2^((HST(i)-98)/6)).*Dt;
end
Loss_of_life = Loss_of_life+DL;
ASUM=sum(Loss_of_life);
% Last outputs
AEQ=ASUM/length(K);
HST_max=max(HST);
TOT_max=max(TOT);
end% end of function