📄 dbjy.pas
字号:
Grid3.cells[0,11]:='最大需量';
Grid3.cells[0,12]:='需量时间';
for i:=1 to GLGBS do
for M:=0 to 3 do
for j:=0 to 4 do
begin
db_dq_dl[i,m,j]:='0.00';
db_sxx_dl[i,m+1,j]:='0.00';
db_zdxl[i,0,m,j]:='0.0';
db_zdxl[i,1,m,j]:='00-00 00:00:00';
end;
end;
procedure TdbjyForm.FormClose(Sender: TObject; var Action: TCloseAction);
BEGIN
Action:=caFree;
end;
procedure TdbjyForm.Grid2SetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: String);
var
i:Integer;
begin
if ACol=2 then
if CheckBox2.Checked and (Value<>'') then
begin
for i:=1 to Grid2.RowCount-1 do
if (ARow<>i) then
Grid2.Cells[ACol,i]:=Value;
end;
if ACol in [3,5] then
if CheckBox3.Checked and (Value<>'') then
begin
for i:=1 to Grid2.RowCount-1 do
if (ARow<>i) then
Grid2.Cells[ACol,i]:=Value;
end;
if ACol IN[4,6] then
if CheckBox4.Checked and (Value<>'') then
begin
for i:=1 to Grid2.RowCount-1 do
if (ARow<>i) then
Grid2.Cells[ACol,i]:=Value;
end;
if ACol=7 then
if CheckBox1.Checked and (Value<>'') then
begin
for i:=1 to Grid2.RowCount-1 do
if (ARow<>i) then
Grid2.Cells[ACol,i]:=Value;
end;
end;
procedure TdbjyForm.SpeedButton9Click(Sender: TObject);
begin
if GLXX='三相三线' then
ib.Text:='0';
Combxj.ItemIndex:=3;
Comfx.ItemIndex:=GLFX;
Panel1.BringToFront;
Panel1.Visible:=true;
end;
procedure TdbjyForm.Button1Click(Sender: TObject);
begin
Panel1.Visible:=False;
end;
procedure TdbjyForm.Cmd1Click(Sender: TObject);
var
i,j:integer;
begin
tmpua:=GLDY*strtofloat(ua.text)/100;
tmpub:=GLDY*strtofloat(ub.text)/100;
tmpuc:=GLDY*strtofloat(uc.text)/100;
tmpia:=GLDL*strtofloat(ia.text)/100;
tmpib:=GLDL*strtofloat(ib.text)/100;
tmpic:=GLDL*strtofloat(ic.text)/100;
tmpys:=Combxj.Text;
if tmpys='1.0' then
tmpjd:=0;
if tmpys='0.5L' then
tmpjd:=60;
if tmpys='0.8C' then
tmpjd:=-30;
if tmpys='0.5C' then
tmpjd:=-60;
if tmpys='0.8L' then
tmpjd:=30;
if tmpys='0.25L' then
tmpjd:=75;
if tmpys='0.25C' then
tmpjd:=-75;
if instr(tmpys,'C')<>0 then
GLGXRX:=false
else
GLGXRX:=true;
dqflh:=0;
GLFX:=Comfx.ItemIndex;
start_time:=formatdatetime('hh:mm:ss',now);
timer1.Enabled:=true;
panel1.Visible:=False;
end;
procedure TdbjyForm.Timer1Timer(Sender: TObject);
var
tmpstr:string;
i,j:integer;
now_time:string;
fl:integer;
tmpval:double;
tmpxx:integer;
begin
now_time:=Timetostr(Time);
if sqsdb[1,1]='00:00:00' then
begin
if (strtodatetime(now_time)>=strtodatetime(sqsdb[1,db_sds])) and (strtodatetime(now_time)<strtodatetime('23:59:59')) then
dqsd:=sqsdb[0,db_sds];
end else
if (strtodatetime(now_time)>=strtodatetime(sqsdb[1,db_sds])) and (strtodatetime(now_time)<strtodatetime(sqsdb[1,1])) then
dqsd:=sqsdb[0,db_sds];
for i:=1 to db_sds-1 do
begin
if sqsdb[1,i+1]='00:00:00' then
begin
if (strtodatetime(now_time)>=strtodatetime(sqsdb[1,i])) and (strtodatetime(now_time)<strtodatetime('23:59:59')) then
begin
dqsd:=sqsdb[0,i];
break;
end;
end else
if (strtodatetime(now_time)>=strtodatetime(sqsdb[1,i])) and (strtodatetime(now_time)<strtodatetime(sqsdb[1,i+1])) then
begin
dqsd:=sqsdb[0,i];
break;
end;
end;
if dqsd='尖' then fl:=1;
if dqsd='峰' then fl:=2;
if dqsd='平' then fl:=3;
if dqsd='谷' then fl:=4;
for i:=1 to GLGBS do
begin
//有功电量
if GLXX='三相三线' then
tmpval:=abs(0.866*cos(tmpjd/180*3.1415926)*(tmpua*tmpia+tmpub*tmpib+tmpuc*tmpic)*(strtodatetime(now_time)-strtodatetime(start_time))*GLSFBL/3600)
else
tmpval:=abs(cos(tmpjd/180*3.1415926)*(tmpua*tmpia+tmpub*tmpib+tmpuc*tmpic)*(strtodatetime(now_time)-strtodatetime(start_time))*GLSFBL/3600);
db_dq_dl[i,GLFX,fl]:=formatfloat('0.00',strtofloat(db_dq_dl[i,GLFX,fl])+tmpval);
//最大需量
if GLXX='三相三线' then
db_zdxl[i,0,GLFX,fl]:=formatfloat('0.0000',abs(0.866*cos(tmpjd/180*3.1415926)*(tmpua*tmpia+tmpub*tmpib+tmpuc*tmpic))/1000)
else
db_zdxl[i,0,GLFX,fl]:=formatfloat('0.0000',abs(cos(tmpjd/180*3.1415926)*(tmpua*tmpia+tmpub*tmpib+tmpuc*tmpic))/1000);
db_zdxl[i,1,GLFX,fl]:=mid(grid3.cells[i,1],6,5)+' '+grid3.cells[i,2];
if strtofloat(db_zdxl[i,0,GLFX,fl])>=strtofloat(db_zdxl[i,0,GLFX,0]) then
begin
db_zdxl[i,0,GLFX,0]:=db_zdxl[i,0,GLFX,fl];
db_zdxl[i,1,GLFX,0]:=db_zdxl[i,1,GLFX,fl];
end;
Grid3.cells[i,11]:=db_zdxl[i,0,GLFX,0]+'kW';
Grid3.cells[i,12]:=db_zdxl[i,1,GLFX,0];
//无功电量
if GLGXRX then
begin
case GLFX of
0,2:
tmpxx:=1;
1,3:
tmpxx:=3;
end;
end else
begin
case GLFX of
0,2:
tmpxx:=4;
1,3:
tmpxx:=2;
end;
end;
//无功最大需量
// db_zdxl[i,0,glfx,fl]:=formatfloat('0.000',abs(sin(tmpjd/180*3.1415926)*(tmpua*tmpia+tmpub*tmpib+tmpuc*tmpic)));
// db_zdxl[i,1,glfx,fl]:=mid(grid3.cells[i,1],6,5)+' '+mid(grid3.cells[i,2],1,5);
// db_zdxl[i,0,glfx,0]:=formatfloat('0.000',abs(sin(tmpjd/180*3.1415926)*(tmpua*tmpia+tmpub*tmpib+tmpuc*tmpic)));
// db_zdxl[i,1,glfx,0]:=mid(grid3.cells[i,1],6,5)+' '+mid(grid3.cells[i,2],1,5);
if GLXX='三相三线' then
tmpval:=abs(0.866*sin(tmpjd/180*3.1415926)*(tmpua*tmpia+tmpub*tmpib+tmpuc*tmpic)*(strtodatetime(now_time)-strtodatetime(start_time))*GLSFBL/3600)
else
tmpval:=abs(sin(tmpjd/180*3.1415926)*(tmpua*tmpia+tmpub*tmpib+tmpuc*tmpic)*(strtodatetime(now_time)-strtodatetime(start_time))*GLSFBL/3600);
db_sxx_dl[i,tmpxx,fl]:=formatfloat('0.00',strtofloat(db_sxx_dl[i,tmpxx,fl])+tmpval);
db_dq_dl[i,2,fl]:=formatfloat('0.00',strtofloat(db_sxx_dl[i,1,fl])+strtofloat(db_sxx_dl[i,4,fl]));
db_dq_dl[i,3,fl]:=formatfloat('0.00',strtofloat(db_sxx_dl[i,2,fl])+strtofloat(db_sxx_dl[i,3,fl]));
//当前方向总电量
tmpval:=0;
for j:=1 to 4 do
tmpval:=tmpval+strtofloat(db_dq_dl[i,GLFX,j]);
db_dq_dl[i,GLFX,0]:=formatfloat('0.00',tmpval);
tmpval:=0;
for j:=1 to 4 do
tmpval:=tmpval+strtofloat(db_sxx_dl[i,tmpxx,j]);
db_sxx_dl[i,tmpxx,0]:=formatfloat('0.00',tmpval);
db_dq_dl[i,2,0]:=formatfloat('0.00',strtofloat(db_sxx_dl[i,1,0])+strtofloat(db_sxx_dl[i,4,0]));
db_dq_dl[i,3,0]:=formatfloat('0.00',strtofloat(db_sxx_dl[i,2,0])+strtofloat(db_sxx_dl[i,3,0]));
for j:=0 to 3 do
grid3.cells[i,j+3]:=db_dq_dl[i,j,0];
for j:=1 to 4 do
grid3.cells[i,j+6]:=db_sxx_dl[i,j,0];
end;
if dqflh<>fl then
begin
start_time:=now_time;
dqflh:=fl;
end;
end;
procedure TdbjyForm.SpeedButton10Click(Sender: TObject);
begin
timer1.Enabled:=false;
tmpua:=0;
tmpub:=0;
tmpuc:=0;
tmpia:=0;
tmpib:=0;
tmpic:=0;
end;
procedure TdbjyForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
tmpini:Tinifile;
i,j,m:integer;
begin
tmpini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'dgntest.ini');
for i:=1 to GLGBS do begin
tmpini.WriteString('DGNB_TEST','BDZ'+IntToStr(i),Grid2.Cells[1,i]);
tmpini.WriteString('DGNB_TEST','BGY'+IntToStr(i),Grid2.Cells[2,i]);
tmpini.WriteString('DGNB_TEST','MM'+IntToStr(i),Grid2.Cells[3,i]);
tmpini.WriteString('DGNB_TEST','BCQX'+IntToStr(i),Grid2.Cells[4,i]);
tmpini.WriteString('DGNB_TEST','XLMM'+IntToStr(i),Grid2.Cells[5,i]);
tmpini.WriteString('DGNB_TEST','XLQX'+IntToStr(i),Grid2.Cells[6,i]);
tmpini.WriteString('DGNB_TEST','BTL'+IntToStr(i),Grid2.Cells[7,i]);
//保存表数据
tmpini.WriteString('表'+inttostr(i),'正向有功总',db_dq_dl[i,0,0]);
tmpini.WriteString('表'+inttostr(i),'正向有功尖',db_dq_dl[i,0,1]);
tmpini.WriteString('表'+inttostr(i),'正向有功峰',db_dq_dl[i,0,2]);
tmpini.WriteString('表'+inttostr(i),'正向有功平',db_dq_dl[i,0,3]);
tmpini.WriteString('表'+inttostr(i),'正向有功谷',db_dq_dl[i,0,4]);
tmpini.WriteString('表'+inttostr(i),'反向有功总',db_dq_dl[i,1,0]);
tmpini.WriteString('表'+inttostr(i),'反向有功尖',db_dq_dl[i,1,1]);
tmpini.WriteString('表'+inttostr(i),'反向有功峰',db_dq_dl[i,1,2]);
tmpini.WriteString('表'+inttostr(i),'反向有功平',db_dq_dl[i,1,3]);
tmpini.WriteString('表'+inttostr(i),'反向有功谷',db_dq_dl[i,1,4]);
tmpini.WriteString('表'+inttostr(i),'正向无功总',db_dq_dl[i,2,0]);
tmpini.WriteString('表'+inttostr(i),'正向无功尖',db_dq_dl[i,2,1]);
tmpini.WriteString('表'+inttostr(i),'正向无功峰',db_dq_dl[i,2,2]);
tmpini.WriteString('表'+inttostr(i),'正向无功平',db_dq_dl[i,2,3]);
tmpini.WriteString('表'+inttostr(i),'正向无功谷',db_dq_dl[i,2,4]);
tmpini.WriteString('表'+inttostr(i),'反向无功总',db_dq_dl[i,3,0]);
tmpini.WriteString('表'+inttostr(i),'反向无功尖',db_dq_dl[i,3,1]);
tmpini.WriteString('表'+inttostr(i),'反向无功峰',db_dq_dl[i,3,2]);
tmpini.WriteString('表'+inttostr(i),'反向无功平',db_dq_dl[i,3,3]);
tmpini.WriteString('表'+inttostr(i),'反向无功谷',db_dq_dl[i,3,4]);
tmpini.WriteString('表'+inttostr(i),'一象限无功总',db_sxx_dl[i,1,0]);
tmpini.WriteString('表'+inttostr(i),'一象限无功尖',db_sxx_dl[i,1,1]);
tmpini.WriteString('表'+inttostr(i),'一象限无功峰',db_sxx_dl[i,1,2]);
tmpini.WriteString('表'+inttostr(i),'一象限无功平',db_sxx_dl[i,1,3]);
tmpini.WriteString('表'+inttostr(i),'一象限无功谷',db_sxx_dl[i,1,4]);
tmpini.WriteString('表'+inttostr(i),'二象限无功总',db_sxx_dl[i,2,0]);
tmpini.WriteString('表'+inttostr(i),'二象限无功尖',db_sxx_dl[i,2,1]);
tmpini.WriteString('表'+inttostr(i),'二象限无功峰',db_sxx_dl[i,2,2]);
tmpini.WriteString('表'+inttostr(i),'二象限无功平',db_sxx_dl[i,2,3]);
tmpini.WriteString('表'+inttostr(i),'二象限无功谷',db_sxx_dl[i,2,4]);
tmpini.WriteString('表'+inttostr(i),'三象限无功总',db_sxx_dl[i,3,0]);
tmpini.WriteString('表'+inttostr(i),'三象限无功尖',db_sxx_dl[i,3,1]);
tmpini.WriteString('表'+inttostr(i),'三象限无功峰',db_sxx_dl[i,3,2]);
tmpini.WriteString('表'+inttostr(i),'三象限无功平',db_sxx_dl[i,3,3]);
tmpini.WriteString('表'+inttostr(i),'三象限无功谷',db_sxx_dl[i,3,4]);
tmpini.WriteString('表'+inttostr(i),'四象限无功总',db_sxx_dl[i,4,0]);
tmpini.WriteString('表'+inttostr(i),'四象限无功尖',db_sxx_dl[i,4,1]);
tmpini.WriteString('表'+inttostr(i),'四象限无功峰',db_sxx_dl[i,4,2]);
tmpini.WriteString('表'+inttostr(i),'四象限无功平',db_sxx_dl[i,4,3]);
tmpini.WriteString('表'+inttostr(i),'四象限无功谷',db_sxx_dl[i,4,4]);
tmpini.WriteString('表'+inttostr(i),'正向有功需量',db_zdxl[i,0,0,0]);
tmpini.WriteString('表'+inttostr(i),'正向有功需量时间',db_zdxl[i,1,0,0]);
tmpini.WriteString('表'+inttostr(i),'反向有功需量',db_zdxl[i,0,1,0]);
tmpini.WriteString('表'+inttostr(i),'反向有功需量时间',db_zdxl[i,1,1,0]);
tmpini.WriteString('表'+inttostr(i),'正向无功需量',db_zdxl[i,0,2,0]);
tmpini.WriteString('表'+inttostr(i),'正向无功需量时间',db_zdxl[i,1,2,0]);
tmpini.WriteString('表'+inttostr(i),'反向无功需量',db_zdxl[i,0,2,0]);
tmpini.WriteString('表'+inttostr(i),'反向无功需量时间',db_zdxl[i,1,2,0]);
end;
tmpini.free;
end;
procedure TdbjyForm.Timer2Timer(Sender: TObject);
var
h,j,m:integer;
DLQL:boolean;
tmpini:Tinifile;
begin
for h:=1 to GLGBS do
begin
try
Grid3.cells[h,1]:=formatdatetime('YYYY-MM-DD',strtodatetime(Grid3.cells[h,1]+' '+Grid3.cells[h,2])+strtodatetime('00:00:01'));
Grid3.cells[h,2]:=formatdatetime('hh:mm:ss',strtodatetime(Grid3.cells[h,1]+' '+Grid3.cells[h,2])+strtodatetime('00:00:01'));
except
end;
tmpini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'dgntest.ini');
DLQL:=tmpini.Readbool('校验参数','表'+inttostr(h)+'DLQL',False);
if (mid(Grid3.cells[h,1],9,2)='01') and (NOT DLQL) then
begin
for m:=0 to 3 do
begin
for j:=0 to 4 do
begin
db_dq_dl[h,m,j]:='0.00';
db_sxx_dl[h,m+1,j]:='0.00';
db_zdxl[h,0,m,j]:='0.0';
db_zdxl[h,1,m,j]:='00-00 00:00:00';
end;
grid3.cells[h,m+3]:=db_dq_dl[h,m,0];
grid3.cells[h,m+7]:=db_sxx_dl[h,m+1,0];
end;
DLQL:=True;
end;
if (mid(Grid3.cells[h,1],9,2)<>'01') then DLQL:=False;
tmpini.Writebool('校验参数','表'+inttostr(h)+'DLQL',DLQL);
end;
tmpini.free;
end;
procedure TdbjyForm.GroupBox3DblClick(Sender: TObject);
begin
memo1.BringToFront;
memo1.Visible:=not memo1.Visible;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -