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

📄 opcclient.pas

📁 Simple delphi opc client
💻 PAS
字号:
unit OPCClient;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  CWDSLib_TLB, CWUIControlsLib_TLB, StdCtrls, OleCtrls;

type
  TForm1 = class(TForm)
    CWGraph1: TCWGraph;
    URLRead: TEdit;
    Label1: TLabel;
    ConnectBtn: TButton;
    BrowseBtn: TButton;
    DisconnectBtn: TButton;
    StatusRead: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    TimeStampText: TEdit;
    QualityLED: TCWButton;
    Label4: TLabel;
    CWDataSocket1: TCWDataSocket;
    URLWrite: TEdit;
    StatusWrite: TEdit;
    WriteValue: TCWNumEdit;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    CWDataSocket2: TCWDataSocket;
    procedure ConnectBtnClick(Sender: TObject);
    procedure BrowseBtnClick(Sender: TObject);
    procedure DisconnectBtnClick(Sender: TObject);
    procedure QuitBtnClick(Sender: TObject);
    procedure CWDataSocket1DataUpdated(Sender: TObject;
      const Data: _DCWData);
    procedure CWDataSocket1StatusUpdated(Sender: TObject; Status,
      Error: Integer; const Message: WideString);
    procedure CWDataSocket2StatusUpdated(Sender: TObject; Status,
      Error: Integer; const Message: WideString);
    procedure WriteValueChanged(Sender: TObject; var Value,
      PreviousValue: OleVariant; OutOfRange: WordBool);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.ConnectBtnClick(Sender: TObject);
begin
     // Connect to the specified URL
     CWDatasocket1.ConnectTo(URLRead.Text, cwdsReadAutoUpdate);
     CWDatasocket2.ConnectTo(URLWrite.Text, cwdsWriteAutoUpdate);
end;

procedure TForm1.BrowseBtnClick(Sender: TObject);
begin
     if (CWDatasocket1.SelectURL('opc:', 'Select Read URL', 0, '') = true) then
        begin
             URLRead.Text := CWDatasocket1.URL;
             CWDatasocket1.ConnectTo(URLRead.Text, cwdsReadAutoUpdate);
        end;

     if (CWDatasocket2.SelectURL('opc:', 'Select Write URL', 0, '') = true) then
        begin
             URLWrite.Text := CWDatasocket2.URL;
             CWDatasocket1.ConnectTo(URLWrite.Text, cwdsWriteAutoUpdate);
        end;
end;

procedure TForm1.DisconnectBtnClick(Sender: TObject);
begin
     CWDatasocket1.Disconnect();
     CWDatasocket2.Disconnect();
end;

procedure TForm1.QuitBtnClick(Sender: TObject);
begin
     Application.Terminate();
end;

procedure TForm1.CWDataSocket1DataUpdated(Sender: TObject;
  const Data: _DCWData);
begin
     //As new data is received, chart the data on the graph.
     CWGraph1.ChartY(Data.Value, 1, true);
     CWGraph1.Plots.Item(2).ChartY(CWDataSocket2.Data.Value, 1);
     //Read the quality and timestamp attributes
     TimeStampText.Text := Data.GetAttribute('TimeStamp', 'Not Available').Value;
     QualityLED.Value := (Data.GetAttribute('Quality', cwdsOPCBad).Value = cwdsOPCGood);
end;

procedure TForm1.CWDataSocket1StatusUpdated(Sender: TObject; Status,
  Error: Integer; const Message: WideString);
begin
     StatusRead.Text := Message;
end;

procedure TForm1.CWDataSocket2StatusUpdated(Sender: TObject; Status,
  Error: Integer; const Message: WideString);
begin
     StatusWrite.Text := Message;
end;

procedure TForm1.WriteValueChanged(Sender: TObject; var Value,
  PreviousValue: OleVariant; OutOfRange: WordBool);
begin
        CWDataSocket2.Data.Value := Value;
end;

end.

⌨️ 快捷键说明

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