📄 unitorder3.~pas
字号:
end; //end while
end; //end if
//close();
end; //end with
end;
Function TFormOrder3.GetOrderTypeStr(OrderType : Integer) : string;
var
OrderTypeStr : string;
begin
case OrderType of
0: OrderTypeStr := '[读取]仪表参数信息';
1: OrderTypeStr := '[设置]数据间隔';
2: OrderTypeStr := '[设置]主动上传';
3: OrderTypeStr := '[设置]投切间隔';
4: OrderTypeStr := '[设置]电容器数据形式级数/容量';
5: OrderTypeStr := '[设置]CT变比';
6: OrderTypeStr := '[设置]PT变比';
7: OrderTypeStr := '[设置]月冻结时间';
8: OrderTypeStr := '[设置]电能冻结时刻';
9: OrderTypeStr := '[设置]电压上限';
10: OrderTypeStr := '[设置]电压下限';
11: OrderTypeStr := '[设置]电流上限';
12: OrderTypeStr := '[设置]额定电流';
13: OrderTypeStr := '[设置]仪表时间年月日时分秒';
14: OrderTypeStr := '[设置]仪表时间年月日周';
15: OrderTypeStr := '[设置]仪表时间时分秒';
16: OrderTypeStr := '[设置]仪表数据清空';
21: OrderTypeStr := '[设置]仪表切电复位';
22: OrderTypeStr := '[设置]指令停止执行';
31: OrderTypeStr := '[取数]实时负荷数据';
32: OrderTypeStr := '[取数]特定时间负荷数据';
33: OrderTypeStr := '[取数]多包负荷数据';
34: OrderTypeStr := '[取数]电容器数据';
35: OrderTypeStr := '[取数]谐波数据';
36: OrderTypeStr := '[取数]电能数据';
37: OrderTypeStr := '[取数]多包电能数据';
38: OrderTypeStr := '[取数]冻结电能数据';
39: OrderTypeStr := '[取数]缺陷记录';
40: OrderTypeStr := '[取数]断相统计';
41: OrderTypeStr := '[取数]月统计值数据';
42: OrderTypeStr := '[取数]月最大值数据';
43: OrderTypeStr := '[取数]月最小值数据';
44: OrderTypeStr := '[取数]月电容器补偿累计';
45: OrderTypeStr := '[取数]Dsp 月谐波最大值';
46: OrderTypeStr := '[取数]Dsp 实时谐波数据';
47: OrderTypeStr := '[取数]电压合格率';
48: OrderTypeStr := '[取数]供电可靠率';
49: OrderTypeStr := '[取数]电能(峰平谷)';
50: OrderTypeStr := '[读取]DSP 参数信息';
51: OrderTypeStr := '[设置]DSP CT变比';
52: OrderTypeStr := '[设置]DSP PT变比';
53: OrderTypeStr := '[设置]DSP 电压控制上限';
54: OrderTypeStr := '[设置]DSP 电压控制下限';
55: OrderTypeStr := '[设置]DSP 温度控制上限';
56: OrderTypeStr := '[设置]DSP 温度控制下限';
57: OrderTypeStr := '[设置]DSP 谐波控制上限';
58: OrderTypeStr := '[设置]DSP 投切周期';
59: OrderTypeStr := '[设置]DSP 冷却时间';
else
OrderTypeStr := Format('%d号指令', [OrderType]);
end;
////////////////////////////////////////////////////////
result := OrderTypeStr;
end;
procedure TFormOrder3.Show_Day(strID : string; strName : string);
var
strCurTime : string;
strSQL : string;
begin
strCurTime := DateToStr(now);
strCurTime := strCurTime + ' 00:00:00';
strSQL := Format('select * from tx_Day_Temp where fd_BianTaiID=%s and fd_SysTime>=''%s'' and fd_OrderIndex=%d ',[strID,strCurTime,OrderIndex]);
//ShowMessage(strSQL);
with MyModule.AdoQuery do
begin
Close();
SQL.Clear();
SQL.Add(strSQL);
//ShowMessage(strSQL);
try
Open();
except
ExecSQL();
end;
if RecordCount <> 0 then
begin
if not eof then
begin
//0 fd_BianTaiID
Edit_Name.Text := strName;
Edit_Time.Text := FieldByName('fd_Time').AsString;
Edit_Ia.Text := FieldByName('fd_Ia').AsString;
Edit_Ib.Text := FieldByName('fd_Ib').AsString;
Edit_Ic.Text := FieldByName('fd_Ic').AsString;
Edit_I0.Text := FieldByName('fd_I0').AsString;
Edit_Cosa.Text := FieldByName('fd_Cosa').AsString;
Edit_Cosb.Text := FieldByName('fd_Cosb').AsString;
Edit_Cosc.Text := FieldByName('fd_Cosc').AsString;
Edit_Cos.Text := FieldByName('fd_Cos').AsString;
Edit_Ua.Text := FieldByName('fd_Ua').AsString;
Edit_Ub.Text := FieldByName('fd_Ub').AsString;
Edit_Uc.Text := FieldByName('fd_Uc').AsString;
Edit_Pa.Text := FieldByName('fd_Pa').AsString;
Edit_Pb.Text := FieldByName('fd_Pb').AsString;
Edit_Pc.Text := FieldByName('fd_Pc').AsString;
Edit_Qa.Text := FieldByName('fd_Qa').AsString;
Edit_Qb.Text := FieldByName('fd_Qb').AsString;
Edit_Qc.Text := FieldByName('fd_Qc').AsString;
Edit_Kwh.Text := FieldByName('fd_Kwh').AsString;
Edit_fKwh.Text := FieldByName('fd_fKwh').AsString;
Edit_zKvarh.Text := FieldByName('fd_zKvarh').AsString;
Edit_fKvarh.Text := FieldByName('fd_fKvarh').AsString;
Edit_Jian.Text := FieldByName('fd_Jian').AsString;
Edit_Feng.Text := FieldByName('fd_Feng').AsString;
Edit_Ping.Text := FieldByName('fd_Ping').AsString;
Edit_Gu.Text := FieldByName('fd_Gu').AsString;
end; //end if not nil
end; //end if RecordCount <> 0
end; //end with
end;
procedure TFormOrder3.Show_Drq(strID : string; strName : string);
var
strCurTime : string;
strSQL : string;
fCos : double;
begin
strCurTime := DateToStr(now);
strCurTime := strCurTime + ' 00:00:00';
strSQL := Format('select * from tx_Drq where fd_BianTaiID=%s and fd_SysTime>= ''%s'' and fd_OrderIndex=%d ',[strID,strCurTime,OrderIndex]);
//ShowMessage(strSQL);
with MyModule.AdoQuery do
begin
Close();
SQL.Clear();
SQL.Add(strSQL);
//ShowMessage(strSQL);
try
Open();
except
ExecSQL();
end;
if RecordCount <> 0 then
begin
if not eof then
begin
Edit_Drq_Name.Text := strName;
Edit_Drq_Time.Text := FieldByName('fd_Time').AsString;
Edit_Drq_Ia1.Text := FieldByName('fd_Ia1').AsString;
Edit_Drq_Ib1.Text := FieldByName('fd_Ib1').AsString;
Edit_Drq_Ic1.Text := FieldByName('fd_Ic1').AsString;
Edit_Drq_I01.Text := FieldByName('fd_I01').AsString;
Edit_Drq_Ia2.Text := FieldByName('fd_Ia2').AsString;
Edit_Drq_Ib2.Text := FieldByName('fd_Ib2').AsString;
Edit_Drq_Ic2.Text := FieldByName('fd_Ic2').AsString;
Edit_Drq_I02.Text := FieldByName('fd_I02').AsString;
Edit_Drq_Cosa1.Text := FieldByName('fd_Cosa1').AsString;
Edit_Drq_Cosb1.Text := FieldByName('fd_Cosb1').AsString;
Edit_Drq_Cosc1.Text := FieldByName('fd_Cosc1').AsString;
fCos := StrToFloat(FieldByName('fd_Cosa1').AsString) +
StrToFloat(FieldByName('fd_Cosb1').AsString) +
StrToFloat(FieldByName('fd_Cosc1').AsString);
Edit_Drq_Cos1.Text := Format('%.3f', [(fCos / 3)]) ;
Edit_Drq_Cosa2.Text := FieldByName('fd_Cosa2').AsString;
Edit_Drq_Cosb2.Text := FieldByName('fd_Cosb2').AsString;
Edit_Drq_Cosc2.Text := FieldByName('fd_Cosc2').AsString;
fCos := StrToFloat(FieldByName('fd_Cosa2').AsString) +
StrToFloat(FieldByName('fd_Cosb2').AsString) +
StrToFloat(FieldByName('fd_Cosc2').AsString);
Edit_Drq_Cos2.Text := Format('%.3f', [(fCos / 3)]) ;
Edit_Drq_XingA.Text := FieldByName('fd_XingA').AsString;
Edit_Drq_XingB.Text := FieldByName('fd_XingB').AsString;
Edit_Drq_XingC.Text := FieldByName('fd_XingC').AsString;
Edit_Drq_JiaoAB.Text := FieldByName('fd_JiaoAB').AsString;
Edit_Drq_JiaoBC.Text := FieldByName('fd_JiaoBC').AsString;
Edit_Drq_JiaoCA.Text := FieldByName('fd_JiaoCA').AsString;
if FieldByName('fd_Type').AsInteger = 0 then
begin
Edit_Drq_Type1.Text := '级数';
Edit_Drq_Type2.Text := '级数';
end
else begin
Edit_Drq_Type1.Text := '容量';
Edit_Drq_Type2.Text := '容量';
end;
Edit_Drq_Ua2.Text := FieldByName('fd_Ua2').AsString;
Edit_Drq_Ub2.Text := FieldByName('fd_Ub2').AsString;
Edit_Drq_Uc2.Text := FieldByName('fd_Uc2').AsString;
end; //end if not nil
end; //end if RecordCount <> 0
end; //end with
end;
procedure TFormOrder3.DataRefresh();
begin
ListView.Items.Clear;
ListViewRefresh();
end;
procedure TFormOrder3.MenuDataRefreshClick(Sender: TObject);
begin
DataRefresh();
end;
procedure TFormOrder3.Show_Xiebo(strID : string; strName : string);
var
strCurTime : string;
strSQL : string;
fXiebo : array [0..40] of double;
i, k : integer;
kkk : double;
fXB_a : double;
fXB_b : double;
fXb_Ib : array [0..40] of double;
begin
strCurTime := DateToStr(now);
strCurTime := strCurTime + ' 00:00:00';
strSQL := 'select fd_Time,fd_Type,fd_X1,fd_X2,fd_X3,fd_X4,fd_X5,fd_X6,fd_X7,fd_X8,fd_X9,fd_X10,';
StrSQL := StrSQL + 'fd_X11,fd_X12,fd_X13,fd_X14,fd_X15,fd_X16,fd_X17,fd_X18,fd_X19,fd_X20,';
StrSQL := StrSQL + 'fd_X21,fd_X22,fd_X23,fd_X24,fd_X25,fd_X26,fd_X27,fd_X28,fd_X29,fd_X30,';
StrSQL := StrSQL + 'fd_X31,fd_X32,fd_X33,fd_X34,fd_X35,fd_X36,fd_X37,fd_X38,fd_X39,fd_X40 ';
StrSQL := StrSQL + ' from tx_Xiebo where fd_BianTaiID=';
StrSQL := StrSQL + strID;
StrSQL := StrSQL + ' and fd_SysTime>=''';
StrSQL := StrSQL + strCurTime + '''';
StrSQL := StrSQL + ' and fd_OrderIndex=';
StrSQL := StrSQL + IntToStr(OrderIndex);
//ShowMessage(strSQL);
with MyModule.AdoQuery do
begin
Close();
SQL.Clear();
SQL.Add(strSQL);
try
Open();
except
ExecSQL();
end;
if RecordCount <> 0 then
begin
if not eof then
begin
Edit_Xiebo_Name.Text := strName;
Edit_Xiebo_Time.Text := FieldByName('fd_Time').AsString;
if FieldByName('fd_Type').AsInteger = 0 then
begin
Edit_Xiebo_Type.Text := 'B相电压采样';
end
else begin
Edit_Xiebo_Type.Text := 'B相电流采样';
end;
fXiebo[0] := FieldByName('fd_X1').AsFloat;
fXiebo[1] := FieldByName('fd_X2').AsFloat;
fXiebo[2] := FieldByName('fd_X3').AsFloat;
fXiebo[3] := FieldByName('fd_X4').AsFloat;
fXiebo[4] := FieldByName('fd_X5').AsFloat;
fXiebo[5] := FieldByName('fd_X6').AsFloat;
fXiebo[6] := FieldByName('fd_X7').AsFloat;
fXiebo[7] := FieldByName('fd_X8').AsFloat;
fXiebo[8] := FieldByName('fd_X9').AsFloat;
fXiebo[9] := FieldByName('fd_X10').AsFloat;
fXiebo[10] := FieldByName('fd_X11').AsFloat;
fXiebo[11] := FieldByName('fd_X12').AsFloat;
fXiebo[12] := FieldByName('fd_X13').AsFloat;
fXiebo[13] := FieldByName('fd_X14').AsFloat;
fXiebo[14] := FieldByName('fd_X15').AsFloat;
fXiebo[15] := FieldByName('fd_X16').AsFloat;
fXiebo[16] := FieldByName('fd_X17').AsFloat;
fXiebo[17] := FieldByName('fd_X18').AsFloat;
fXiebo[18] := FieldByName('fd_X19').AsFloat;
fXiebo[19] := FieldByName('fd_X20').AsFloat;
fXiebo[20] := FieldByName('fd_X21').AsFloat;
fXiebo[21] := FieldByName('fd_X22').AsFloat;
fXiebo[22] := FieldByName('fd_X23').AsFloat;
fXiebo[23] := FieldByName('fd_X24').AsFloat;
fXiebo[24] := FieldByName('fd_X25').AsFloat;
fXiebo[25] := FieldByName('fd_X26').AsFloat;
fXiebo[26] := FieldByName('fd_X27').AsFloat;
fXiebo[27] := FieldByName('fd_X28').AsFloat;
fXiebo[28] := FieldByName('fd_X29').AsFloat;
fXiebo[29] := FieldByName('fd_X30').AsFloat;
fXiebo[30] := FieldByName('fd_X31').AsFloat;
fXiebo[31] := FieldByName('fd_X32').AsFloat;
fXiebo[32] := FieldByName('fd_X33').AsFloat;
fXiebo[33] := FieldByName('fd_X34').AsFloat;
fXiebo[34] := FieldByName('fd_X35').AsFloat;
fXiebo[35] := FieldByName('fd_X36').AsFloat;
fXiebo[36] := FieldByName('fd_X37').AsFloat;
fXiebo[37] := FieldByName('fd_X38').AsFloat;
fXiebo[38] := FieldByName('fd_X39').AsFloat;
fXiebo[39] := FieldByName('fd_X40').AsFloat;
// 原始数据
Edit_Xiebo_1.Text := FloatToStr( fXiebo[0] );
Edit_Xiebo_2.Text := FloatToStr( fXiebo[1] );
Edit_Xiebo_3.Text := FloatToStr( fXiebo[2] );
Edit_Xiebo_4.Text := FloatToStr( fXiebo[3] );
Edit_Xiebo_5.Text := FloatToStr( fXiebo[4] );
Edit_Xiebo_6.Text := FloatToStr( fXiebo[5] );
Edit_Xiebo_7.Text := FloatToStr( fXiebo[6] );
Edit_Xiebo_8.Text := FloatToStr( fXiebo[7] );
Edit_Xiebo_9.Text := FloatToStr( fXiebo[8] );
Edit_Xiebo_10.Text := FloatToStr( fXiebo[9] );
Edit_Xiebo_11.Text := FloatToStr( fXiebo[10] );
Edit_Xiebo_12.Text := FloatToStr( fXiebo[11] );
Edit_Xiebo_13.Text := FloatToStr( fXiebo[12] );
Edit_Xiebo_14.Text := FloatToStr( fXiebo[13] );
Edit_Xiebo_15.Text := FloatToStr( fXiebo[14] );
Edit_Xiebo_16.Text := FloatToStr( fXiebo[15] );
Edit_Xiebo_17.Text := FloatToStr( fXiebo[16] );
Edit_Xiebo_18.Text := FloatToStr( fXiebo[17] );
Edit_Xiebo_19.Text := FloatToStr( fXiebo[18] );
Edit_Xiebo_20.Text := FloatToStr( fXiebo[19] );
Edit_Xiebo_21.Text := FloatToStr( fXiebo[20] );
Edit_Xiebo_22.Text := FloatToStr( fXiebo[21] );
Edit_Xiebo_23.Text := FloatToStr( fXiebo[22] );
Edit_Xiebo_24.Text := FloatToStr( fXiebo[23] );
Edit_Xiebo_25.Text := FloatToStr( fXiebo[24] );
Edit_Xiebo_26.Text := FloatToStr( fXiebo[25] );
Edit_Xiebo_27.Text := FloatToStr( fXiebo[26] );
Edit_Xiebo_28.Text := FloatToStr( fXiebo[27] );
Edit_Xiebo_29.Text := FloatToStr( fXiebo[28] );
Edit_Xiebo_30.Text := FloatToStr( fXiebo[29] );
Edit_Xiebo_31.Text := FloatToStr( fXiebo[30] );
Edit_Xiebo_32.Text := FloatToStr( fXiebo[31] );
Edit_Xiebo_33.Text := FloatToStr( fXiebo[32] );
Edit_Xiebo_34.Text := FloatToStr( fXiebo[33] );
Edit_Xiebo_35.Text := FloatToStr( fXiebo[34] );
Edit_Xiebo_36.Text := FloatToStr( fXiebo[35] );
Edit_Xiebo_37.Text := FloatToStr( fXiebo[36] );
Edit_Xiebo_38.Text := FloatToStr( fXiebo[37] );
Edit_Xiebo_39.Text := FloatToStr( fXiebo[38] );
Edit_Xiebo_40.Text := FloatToStr( fXiebo[39] );
// 谐波分析以及计算
for i := 0 to 20 do //计算基波以及2-19次谐波
begin
fXB_a := 0;
fXB_b := 0;
for k := 0 to 40 do
begin
kkk := ( (k + 1) * i * PAI ) / 20;
fXB_a := fXB_a + fXiebo[k] * cos(kkk);
fXB_b := fXB_b + fXiebo[k] * sin(kkk);
end;
fXB_Ib[i] := fXB_a*fXB_a + fXB_b*fXB_b;
end; // Compute Xiebo
fXB_Ib[1] := sqrt( fXB_Ib[1] );
fXB_Ib[3] := sqrt( fXB_Ib[3] );
fXB_Ib[5] := sqrt( fXB_Ib[5] );
fXB_Ib[7] := sqrt( fXB_Ib[7] );
fXB_Ib[9] := sqrt( fXB_Ib[9] );
fXB_Ib[11]:= sqrt( fXB_Ib[11] );
fXB_Ib[13]:= sqrt( fXB_Ib[13] );
fXB_Ib[15]:= sqrt( fXB_Ib[15] );
fXB_Ib[17]:= sqrt( fXB_Ib[17] );
fXB_Ib[19]:= sqrt( fXB_Ib[19] );
Edit_Xiebo_Val1.Text := '100%'; //基波
Edit_Xiebo_Val3.Text := FloatToStr( RoundTo((fXB_Ib[3] / fXb_Ib[1]*100), -3) ) + '%';
Edit_Xiebo_Val5.Text := FloatToStr( RoundTo((fXB_Ib[5] / fXb_Ib[1]*100), -3) ) + '%';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -