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

📄 unitorder3.~pas

📁 远程抄表系统的客户端程序 安徽六安项目-客户端程序 0 开发环境 Delphi 7.0 所需控件 mxOutlookBar 数 据 库 Sybase 11.5 1 04-12-
💻 ~PAS
📖 第 1 页 / 共 5 页
字号:
      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 + -