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

📄 qzhjunit1.~pas

📁 实现了断路器群控系统
💻 ~PAS
字号:
unit qzhjUnit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, OleCtrls, MSCommLib_TLB;

type
  Tqianzhiji = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    MSComm1: TMSComm;
    Timer1: TTimer;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    Edit12: TEdit;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Timer2: TTimer;
    Timer3: TTimer;
    Label13: TLabel;
    Edit13: TEdit;
    Label14: TLabel;
    Edit14: TEdit;
    Label15: TLabel;
    Edit15: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure MSComm1Comm(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  qianzhiji: Tqianzhiji;
  duanluqi1_dianliu:Integer;
  duanluqi1_dianya:Integer;
  duanluqi2_dianliu:Integer;
  duanluqi2_dianya:Integer;
  duanluqi3_dianliu:Integer;
  duanluqi3_dianya:Integer;
  jialiu1:Boolean;
  jialiu2:Boolean;
  jialiu3:Boolean;
  jiaya:Boolean;
  index:integer;
  ctrl:integer;
implementation
{$R *.dfm}
Procedure TimeDelay(DT:DWORD);
var
  TT:DWORD;
begin
  TT:=GetTickCount();
  while GetTickCount()-TT<DT do
    Application.ProcessMessages;
end;
procedure Tqianzhiji.Button1Click(Sender: TObject);
begin
   MSComm1.PortOpen:=False;
   timer1.Enabled := False;
   close;
end;

procedure Tqianzhiji.FormCreate(Sender: TObject);
begin
  if Not MSComm1.PortOpen then
  begin
     MSComm1.PortOpen:=True;
     MSComm1.DTREnable:=True;
     MSComm1.RTSEnable:=True;
  end;
  MSComm1.RThreshold := 1;
  jialiu1:=True;
  jialiu2:=True;
  jialiu3:=True;
  jiaya:=True;
  ctrl:=0;
  Edit13.Text:='10';
  Edit14.Text:='10';
  Edit15.Text:='10';

end;

procedure Tqianzhiji.Button2Click(Sender: TObject);
begin
   timer1.Enabled := True;
   jialiu1:=True;
   duanluqi1_dianliu:=0;
   Edit2.text:='10KV';
   Edit3.text:='21';
   Edit4.text:='合上';
end;
procedure Tqianzhiji.Button4Click(Sender: TObject);
begin
   timer2.Enabled := True;
   jialiu2:=True;
   duanluqi2_dianliu:=0;
   Edit6.text:='10KV';
   Edit7.text:='20';
   Edit8.text:='合上';
end;

procedure Tqianzhiji.Button6Click(Sender: TObject);
begin
   timer3.Enabled := True;
   jialiu3:=True;
   duanluqi3_dianliu:=0;
   Edit10.text:='10KV';
   Edit11.text:='19' ;
   Edit12.text:='合上';
end;

procedure Tqianzhiji.Timer1Timer(Sender: TObject);
var
   str1:string;
begin
   if jialiu1 then begin
    if edit4.Text='合上' then begin
      duanluqi1_dianliu:=duanluqi1_dianliu+1;
      str1:=inttostr(duanluqi1_dianliu);
      if duanluqi1_dianliu > strtoint(edit13.text) then begin
         edit1.text:='0';
         Edit4.Text:='断开';
         jialiu1:=false;
         exit;
      end;
    end;
   end ;
   edit1.Text := str1;
end;
procedure Tqianzhiji.Timer2Timer(Sender: TObject);
var
   str1:string;
begin
   if jialiu2 then begin
    if edit8.Text='合上'then begin
    duanluqi2_dianliu:=duanluqi2_dianliu+1;
     str1:=inttostr(duanluqi2_dianliu);
     if duanluqi2_dianliu>strtoint(edit14.text) then begin
        edit5.text:='0';
        Edit8.Text:='断开';
        jialiu2:=false;
        exit;
     end;
     end;
   end ;
   edit5.Text := str1;
end;
procedure Tqianzhiji.Timer3Timer(Sender: TObject);
var
   str1:string;
begin
   if jialiu3 then begin
    if edit12.Text='合上'then begin
     duanluqi3_dianliu:=duanluqi3_dianliu+1;
     str1:=inttostr(duanluqi3_dianliu);
     if duanluqi3_dianliu>strtoint(edit15.text) then begin
        Edit12.Text:='断开';
             edit9.text:='0';
        jialiu3:=false;
        exit;
     end;
    end;
   end;
   edit9.Text:= str1;
end;

procedure Tqianzhiji.Button3Click(Sender: TObject);
begin
   timer1.Enabled := False;
   edit1.text:='0';
   edit4.text:='断开';
end;
procedure Tqianzhiji.Button5Click(Sender: TObject);
begin
   timer2.Enabled := False;
   edit5.text:='0';
   edit8.text:='断开';

end;

procedure Tqianzhiji.Button7Click(Sender: TObject);
begin
   timer3.Enabled := False;
   edit9.text:='0' ;
   edit12.text:='断开';
end;
procedure Tqianzhiji.MSComm1Comm(Sender: TObject);
var
  ReceBuf:string;
  str1:string;
begin
  ReceBuf := Trim(MSComm1.Input);
  if (ReceBuf='断开') and (ctrl=0)then begin
     timer1.Enabled := False;
     edit1.text:='0';
     edit4.text:='断开';
     jialiu1 :=false;
     ctrl:=1;
     exit;
  end;
  if (ReceBuf='断开') and (ctrl=1)then begin
     timer2.Enabled := False;
     edit5.text:='0';
     edit8.text:='断开';
     jialiu2 :=false;
     ctrl:=2;
     exit;
  end;
  if (ReceBuf='断开') and (ctrl=2)then begin
     timer3.Enabled := False;
     edit9.text:='0';
     edit12.text:='断开';
     jialiu3 :=false;
     ctrl:=0;
     exit;
  end;
  if (ReceBuf='闭合')and (ctrl=0)then begin
     timer1.Enabled := True;
  //   showMessage(ctrl1);
     jialiu1:=True;
     Edit2.text:='10KV';
     Edit3.text:='20';
     Edit4.text:='合上';
     ctrl:=1  ;
     exit;
  end;
  if (ReceBuf='闭合')and (ctrl=1)then begin
      timer2.Enabled := True;
      jialiu2:=True;
      Edit6.text:='10KV';
      Edit7.text:='20';
      Edit8.text:='合上';
      ctrl:=2;
     exit;
  end;
  if (ReceBuf='闭合')and (ctrl=2)then begin
      timer3.Enabled := True;
      jialiu3:=True;
      Edit10.text:='10KV';
      Edit11.text:='20';
      Edit12.text:='合上';
      ctrl:=0;
     exit;
  end;
  if ReceBuf='set A1' then begin
     index:=1;
 //    timedelay(60);
     exit;
  end;
  if (index=1) and (ReceBuf<>'set A1') and (ReceBuf<>'set A2') and (ReceBuf<>'set A3') and (ReceBuf<>'read D1') and (ReceBuf<>'read D2') and (ReceBuf<>'read D3') then begin
     Edit13.text:=ReceBuf;
     index:=0;

     //---------------
    //   timedelay(60);
     exit;
  end;
  if  ReceBuf='set A2'then begin
       index:=2;
 //      timedelay(60);
       exit;
  end;
  if (index=2) and (ReceBuf<>'set A1') and (ReceBuf<>'set A2') and (ReceBuf<>'set A3') and (ReceBuf<>'read D1') and (ReceBuf<>'read D2') and (ReceBuf<>'read D3')then begin
      Edit14.Text:=ReceBuf;
      index:=0;
   //   timedelay(60);
      exit;
  end ;
  if  ReceBuf='set A3'then begin
         index:=3;
  //       timedelay(60);
    exit;
  end;
  if (index=3) and (ReceBuf<>'set A1') and (ReceBuf<>'set A2') and (ReceBuf<>'set A3') and (ReceBuf<>'read D1') and (ReceBuf<>'read D2') and (ReceBuf<>'read D3')then begin
    Edit15.Text:=ReceBuf;
    index:=0;
    exit;
  end;
  if ReceBuf='read D1' then begin
     if Edit4.text='断开' then begin
        str1:='断路器1:';
        MSComm1.Output := str1;

       TimeDelay(100);
        str1:=edit1.Text;          //电流
        MSComm1.Output := '   0';
        TimeDelay(100);
        str1:=edit2.Text;         //电压
        MSComm1.Output := '   0';
       TimeDelay(100);
        str1:=edit3.Text;        //温度
        MSComm1.Output := '   0';
         TimeDelay(100);
        str1:=edit4.Text;        //开关状态
        MSComm1.Output := '断开';
       TimeDelay(100);
        exit;
     end
     else begin
        str1:='断路器1:';
        MSComm1.Output := str1;
       TimeDelay(100);
        str1:=edit1.Text;          //电流
        MSComm1.Output := str1;
        TimeDelay(100);
        str1:=edit2.Text;         //电压
        MSComm1.Output := str1;
 //       showmessage(str1);
        TimeDelay(100);
        str1:=edit3.Text;        //温度
        MSComm1.Output := str1;
          TimeDelay(100);;
        str1:=edit4.Text;        //开关状态
        MSComm1.Output := str1;
        TimeDelay(100);;
     end;
     exit;
  end;
  if ReceBuf='read D2' then begin
     if Edit8.text='断开' then begin
        str1:='断路器2:';
        MSComm1.Output :=str1;
        TimeDelay(100);
        MSComm1.Output := '   0';
        TimeDelay(100);
        MSComm1.Output := '   0';
        TimeDelay(100);
        MSComm1.Output := '   0';
        TimeDelay(100);
        str1:=edit8.Text;        //开关状态
        MSComm1.Output := '断开';
        TimeDelay(100);
        exit;
     end
     else begin
        str1:='断路器2:';
        MSComm1.Output := str1;
        TimeDelay(100);
        str1:=edit5.Text;           //dianliu
        MSComm1.Output := str1;
        TimeDelay(100);
        str1:=edit6.Text;          //dianya
        MSComm1.Output := str1;
    //    showmessage(str1);
        TimeDelay(100);
        str1:=edit7.Text;        //wendu
        MSComm1.Output := str1;
        TimeDelay(100);
        str1:=edit8.Text;        //开关状态
        MSComm1.Output := str1;
        TimeDelay(100);
     end;
     exit;
  end;
    if ReceBuf='read D3' then begin
     if Edit12.text='断开' then begin
        str1:='断路器3:';
        MSComm1.Output := str1;
        TimeDelay(100);
        MSComm1.Output := '   0';
        TimeDelay(100);
        MSComm1.Output := '   0';
        TimeDelay(100);
        MSComm1.Output := '   0';
        TimeDelay(100);
        str1:=edit12.Text;        //开关状态
        MSComm1.Output := str1;
        TimeDelay(100);
        exit;
     end
     else begin
        str1:='断路器3:';
        MSComm1.Output := str1;
        TimeDelay(100);
        str1:=edit9.Text;           //dianliu
        MSComm1.Output := str1;
        TimeDelay(100);
        str1:=edit10.Text;          //dianya
        MSComm1.Output := str1;
        TimeDelay(100);
        str1:=edit11.Text;        //wendu
        MSComm1.Output := str1;
        TimeDelay(100);
        str1:=edit12.Text;        //开关状态
        MSComm1.Output := str1;
        TimeDelay(100);
     end;
     exit;

 end;
end;
end.





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -