81 lines
2.7 KiB
Matlab
81 lines
2.7 KiB
Matlab
function [ fsY0, fsY1, fsY2,phaseASpotLoadP,phaseBSpotLoadP,phaseCSpotLoadP ...
|
||
phaseASpotLoadQ,phaseBSpotLoadQ,phaseCSpotLoadQ,setIJ,nodeNum,Balance,phaseABCY ...
|
||
cap] = dataRead(lineZ,dataFile )
|
||
data=dlmread(dataFile);
|
||
baseHighU=data(1,2);
|
||
fsY0=sparse(0);
|
||
fsY1=sparse(0);
|
||
fsY2=sparse(0);
|
||
zeroEntries=find(data(:,1)==0);
|
||
lines=data(zeroEntries(1)+1:zeroEntries(2)-1,:);
|
||
[setIJ,nodeNum]=numberNode(lines);
|
||
if size(setIJ,2)>size(setIJ,1)
|
||
setIJ=setIJ';
|
||
end
|
||
Balance=data(1,1);
|
||
Balance=nodeNum(setIJ==Balance);
|
||
%%three-phase
|
||
phaseABCY=sparse(3*length(nodeNum),3*length(nodeNum));
|
||
%把线路型号都给读出来
|
||
linePar=lines(:,1);
|
||
linePar=unique(linePar);
|
||
for I=1:length(linePar)
|
||
[fs30,fs31,fs32,retphaseABCY]=lineWithConfig(setIJ,nodeNum,lineZ,lines,linePar(I),baseHighU);
|
||
%phaseABCY 三相的导纳矩阵3n x 3n 维
|
||
fsY0=fsY0+fs30;
|
||
fsY1=fsY1+fs31;
|
||
fsY2=fsY2+fs32;
|
||
phaseABCY=phaseABCY+retphaseABCY;
|
||
end
|
||
%% 把电容加到矩阵中
|
||
cap=data(zeroEntries(2)+1:zeroEntries(3)-1,:);
|
||
if ~isempty(cap)
|
||
capNode=nodeNum(ismember(setIJ,cap(:,1)));
|
||
end
|
||
%电容引起的电流
|
||
capG=1j*cap(:,2)/1000;
|
||
% fs3Y=3/3*diag([Zl+2*Zm,Zl-Zm,Zl-Zm]);%这里不是1/3,IEEE上的公式错了。
|
||
fsY0=fsY0+sparse(capNode,capNode,capG,length(fsY0),length(fsY0));
|
||
fsY1=fsY1+sparse(capNode,capNode,capG,length(fsY1),length(fsY1));
|
||
fsY2=fsY2+sparse(capNode,capNode,capG,length(fsY2),length(fsY2));
|
||
|
||
%% spot load
|
||
busNum=length(nodeNum);
|
||
spotloads=data(zeroEntries(3)+1:zeroEntries(4)-1,:);
|
||
spotloads(:,2:end)=spotloads(:,2:end)/1000;
|
||
phaseASpotLoadP=sparse(busNum,1);
|
||
phaseBSpotLoadP=sparse(busNum,1);
|
||
phaseCSpotLoadP=sparse(busNum,1);
|
||
phaseASpotLoadQ=sparse(length(nodeNum),1);
|
||
phaseBSpotLoadQ=sparse(length(nodeNum),1);
|
||
phaseCSpotLoadQ=sparse(length(nodeNum),1);
|
||
phaseASpotLoadP( ismember(setIJ,spotloads(:,1) ) )=spotloads(:,2);
|
||
phaseBSpotLoadP( ismember(setIJ,spotloads(:,1) ) )=spotloads(:,4);
|
||
phaseCSpotLoadP( ismember(setIJ,spotloads(:,1) ) )=spotloads(:,6);
|
||
phaseASpotLoadQ( ismember(setIJ,spotloads(:,1) ) )=spotloads(:,3);
|
||
phaseBSpotLoadQ( ismember(setIJ,spotloads(:,1) ) )=spotloads(:,5);
|
||
phaseCSpotLoadQ( ismember(setIJ,spotloads(:,1) ) )=spotloads(:,7);
|
||
%% 补偿电容
|
||
cap=data(zeroEntries(2)+1:zeroEntries(3)-1,:);
|
||
if ~isempty(cap)
|
||
capNode=nodeNum(ismember(setIJ,cap(:,1)));
|
||
%数据文件中的补偿电容给的是补偿容量,要将其转换为导纳。
|
||
capB=cap(:,2:4)/1000;
|
||
cap=struct();
|
||
cap.capNode=capNode;
|
||
cap.capB=capB;
|
||
%把补偿电容加到矩阵中。
|
||
offSet=(capNode-1)*3+1;
|
||
phaseABCY=phaseABCY+sparse(offSet,offSet,1j*capB(:,1),busNum*3,busNum*3);
|
||
offSet=(capNode-1)*3+2;
|
||
phaseABCY=phaseABCY+sparse(offSet,offSet,1j*capB(:,2),busNum*3,busNum*3);
|
||
offSet=(capNode-1)*3+3;
|
||
phaseABCY=phaseABCY+sparse(offSet,offSet,1j*capB(:,3),busNum*3,busNum*3);
|
||
else
|
||
cap=struct();
|
||
cap.capNode=[];
|
||
cap.capB=sparse(1,3);
|
||
end
|
||
end
|
||
|