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

📄 opcda.pas

📁 OPC 源程序示例
💻 PAS
📖 第 1 页 / 共 3 页
字号:

{*******************************************************}
{                                                       }
{       OPC Data Access 3.0 (and earlier versions)      }
{                                                       }
{       Delphi conversion generated and supplied by     }
{       Mike Dillamore                                  }
{       OPC Programmers' Connection                     }
{       http://www.opcconnect.com/                      }
{       mailto:opc@opcconnect.com                       }
{                                                       }
{       Improvements contributed by                     }
{       Martin Lafferty                                 }
{       Production Robots Engineering Ltd               }
{       http://www.prel.co.uk/                          }
{       mailto:prOpcKit@prel.co.uk                      }
{                                                       }
{*******************************************************}

unit OPCDA;

{$IFDEF VER150}
{$WARN UNSAFE_TYPE OFF}
{$ENDIF}

// ************************************************************************ //
// Type Lib: OPCProxy.dll
// IID\LCID: {3B540B51-0378-4551-ADCC-EA9B104302BF}\0 - Data Access 3.0
// IID\LCID: {B28EEDB2-AC6F-11D1-84D5-00608CB8A7E9}\0 - Data Access 2.0
// ************************************************************************ //

interface

uses
  Windows, ActiveX, SysUtils, OPCtypes;

// *********************************************************************//
// GUIDS declared in the TypeLibrary                                    //
// *********************************************************************//
const
  LIBID_OPCDA: TGUID = '{3B540B51-0378-4551-ADCC-EA9B104302BF}';
  IID_IOPCServer: TIID = '{39C13A4D-011E-11D0-9675-0020AFD8ADB3}';
  IID_IOPCServerPublicGroups: TIID = '{39C13A4E-011E-11D0-9675-0020AFD8ADB3}';
  IID_IOPCBrowseServerAddressSpace: TIID =
                                      '{39C13A4F-011E-11D0-9675-0020AFD8ADB3}';
  IID_IOPCGroupStateMgt: TIID = '{39C13A50-011E-11D0-9675-0020AFD8ADB3}';
  IID_IOPCPublicGroupStateMgt: TIID = '{39C13A51-011E-11D0-9675-0020AFD8ADB3}';
  IID_IOPCSyncIO: TIID = '{39C13A52-011E-11D0-9675-0020AFD8ADB3}';
  IID_IOPCAsyncIO: TIID = '{39C13A53-011E-11D0-9675-0020AFD8ADB3}';
  IID_IOPCItemMgt: TIID = '{39C13A54-011E-11D0-9675-0020AFD8ADB3}';
  IID_IEnumOPCItemAttributes: TIID = '{39C13A55-011E-11D0-9675-0020AFD8ADB3}';
  IID_IOPCDataCallback: TIID = '{39C13A70-011E-11D0-9675-0020AFD8ADB3}';
  IID_IOPCAsyncIO2: TIID = '{39C13A71-011E-11D0-9675-0020AFD8ADB3}';
  IID_IOPCItemProperties: TIID = '{39C13A72-011E-11D0-9675-0020AFD8ADB3}';
  IID_IOPCItemDeadbandMgt: TIID = '{5946DA93-8B39-4ec8-AB3D-AA73DF5BC86F}';
  IID_IOPCItemSamplingMgt: TIID = '{3E22D313-F08B-41a5-86C8-95E95CB49FFC}';
  IID_IOPCBrowse: TIID = '{39227004-A18F-4b57-8B0A-5235670F4468}';
  IID_IOPCItemIO: TIID = '{85C0B427-2893-4cbc-BD78-E5FC5146F08F}';
  IID_IOPCSyncIO2: TIID = '{730F5F0F-55B1-4c81-9E18-FF8A0904E1FA}';
  IID_IOPCAsyncIO3: TIID = '{0967B97B-36EF-423e-B6F8-6BFF1E40D39D}';
  IID_IOPCGroupStateMgt2: TIID = '{8E368666-D72E-4f78-87ED-647611C61C9F}';

  CATID_OPCDAServer10: TGUID = '{63D5F430-CFE4-11d1-B2C8-0060083BA1FB}';
  CATID_OPCDAServer20: TGUID = '{63D5F432-CFE4-11d1-B2C8-0060083BA1FB}';
  CATID_OPCDAServer30: TGUID = '{CC603642-66D7-48f1-B69A-B625E73652D7}';
  CATID_XMLDAServer10: TGUID = '{3098EDA4-A006-48b2-A27F-247453959408}';

// *********************************************************************//
// Declaration of Enumerations defined in Type Library                  //
// *********************************************************************//

type
  OPCDATASOURCE = TOleEnum;
const
  OPC_DS_CACHE  = 1;
  OPC_DS_DEVICE = 2;

type
  OPCBROWSETYPE = TOleEnum;
const
  OPC_BRANCH = 1;
  OPC_LEAF   = 2;
  OPC_FLAT   = 3;

type
  OPCNAMESPACETYPE = TOleEnum;
const
  OPC_NS_HIERARCHIAL = 1;
  OPC_NS_FLAT        = 2;

type
  OPCBROWSEDIRECTION = TOleEnum;
const
  OPC_BROWSE_UP   = 1;
  OPC_BROWSE_DOWN = 2;
  OPC_BROWSE_TO   = 3;

type
  OPCEUTYPE = TOleEnum;
const
  OPC_NOENUM     = 0;
  OPC_ANALOG     = 1;
  OPC_ENUMERATED = 2;

type
  OPCSERVERSTATE = TOleEnum;
const
  OPC_STATUS_RUNNING    = 1;
  OPC_STATUS_FAILED     = 2;
  OPC_STATUS_NOCONFIG   = 3;
  OPC_STATUS_SUSPENDED  = 4;
  OPC_STATUS_TEST       = 5;
  OPC_STATUS_COMM_FAULT = 6;

type
  OPCENUMSCOPE = TOleEnum;
const
  OPC_ENUM_PRIVATE_CONNECTIONS = 1;
  OPC_ENUM_PUBLIC_CONNECTIONS  = 2;
  OPC_ENUM_ALL_CONNECTIONS     = 3;
  OPC_ENUM_PRIVATE             = 4;
  OPC_ENUM_PUBLIC              = 5;
  OPC_ENUM_ALL                 = 6;

type
  OPCBROWSEFILTER = TOleEnum;
const
  OPC_BROWSE_FILTER_ALL      = 1;
  OPC_BROWSE_FILTER_BRANCHES = 2;
  OPC_BROWSE_FILTER_ITEMS    = 3;

// *********************************************************************//
// Constants                                                            //
// *********************************************************************//
// Category description strings
const
   OPC_CATEGORY_DESCRIPTION_DA10    = 'OPC Data Access Servers Version 1.0';
   OPC_CATEGORY_DESCRIPTION_DA20    = 'OPC Data Access Servers Version 2.0';
   OPC_CATEGORY_DESCRIPTION_DA30    = 'OPC Data Access Servers Version 3.0';
   OPC_CATEGORY_DESCRIPTION_XMLDA10 = 'OPC XML Data Access Servers Version 1.0';

// Values for access rights mask
const
  OPC_READABLE  = $01;
  OPC_WRITEABLE = $02;

// Values for browse element flags
const
  OPC_BROWSE_HASCHILDREN = $01;
  OPC_BROWSE_ISITEM      = $02;

// *********************************************************************//
// OPC Quality flags                                                    //
// *********************************************************************//
// Masks for extracting quality subfields
// (note 'status' mask also includes 'Quality' bits)
const
  OPC_QUALITY_MASK           = $C0;
  OPC_STATUS_MASK            = $FC;
  OPC_LIMIT_MASK             = $03;

// Values for QUALITY_MASK bit field
const
  OPC_QUALITY_BAD            = $00;
  OPC_QUALITY_UNCERTAIN      = $40;
  OPC_QUALITY_GOOD           = $C0;

// STATUS_MASK Values for Quality = BAD
const
  OPC_QUALITY_CONFIG_ERROR              = $04;
  OPC_QUALITY_NOT_CONNECTED             = $08;
  OPC_QUALITY_DEVICE_FAILURE            = $0C;
  OPC_QUALITY_SENSOR_FAILURE            = $10;
  OPC_QUALITY_LAST_KNOWN                = $14;
  OPC_QUALITY_COMM_FAILURE              = $18;
  OPC_QUALITY_OUT_OF_SERVICE            = $1C;
  OPC_QUALITY_WAITING_FOR_INITIAL_DATA  = $20;

// STATUS_MASK Values for Quality = UNCERTAIN
const
  OPC_QUALITY_LAST_USABLE    = $44;
  OPC_QUALITY_SENSOR_CAL     = $50;
  OPC_QUALITY_EGU_EXCEEDED   = $54;
  OPC_QUALITY_SUB_NORMAL     = $58;

// STATUS_MASK Values for Quality = GOOD
const
  OPC_QUALITY_LOCAL_OVERRIDE = $D8;

// Values for Limit Bitfield
const
  OPC_LIMIT_OK    = $00;
  OPC_LIMIT_LOW   = $01;
  OPC_LIMIT_HIGH  = $02;
  OPC_LIMIT_CONST = $03;

// *********************************************************************//
// Data Access 2.0 Property IDs:                                        //
// *********************************************************************//
const
  OPC_PROP_CDT            = 1;
  OPC_PROP_VALUE          = 2;
  OPC_PROP_QUALITY        = 3;
  OPC_PROP_TIME           = 4;
  OPC_PROP_RIGHTS         = 5;
  OPC_PROP_SCANRATE       = 6;

  OPC_PROP_UNIT           = 100;
  OPC_PROP_DESC           = 101;
  OPC_PROP_HIEU           = 102;
  OPC_PROP_LOEU           = 103;
  OPC_PROP_HIRANGE        = 104;
  OPC_PROP_LORANGE        = 105;
  OPC_PROP_CLOSE          = 106;
  OPC_PROP_OPEN           = 107;
  OPC_PROP_TIMEZONE       = 108;

  OPC_PROP_DSP            = 200;
  OPC_PROP_FGC            = 201;
  OPC_PROP_BGC            = 202;
  OPC_PROP_BLINK          = 203;
  OPC_PROP_BMP            = 204;
  OPC_PROP_SND            = 205;
  OPC_PROP_HTML           = 206;
  OPC_PROP_AVI            = 207;

  OPC_PROP_ALMSTAT        = 300;
  OPC_PROP_ALMHELP        = 301;
  OPC_PROP_ALMAREAS       = 302;
  OPC_PROP_ALMPRIMARYAREA = 303;
  OPC_PROP_ALMCONDITION   = 304;
  OPC_PROP_ALMLIMIT       = 305;
  OPC_PROP_ALMDB          = 306;
  OPC_PROP_ALMHH          = 307;
  OPC_PROP_ALMH           = 308;
  OPC_PROP_ALML           = 309;
  OPC_PROP_ALMLL          = 310;
  OPC_PROP_ALMROC         = 311;
  OPC_PROP_ALMDEV         = 312;

// *********************************************************************//
// Data Access 3.0 Property IDs:                                        //
// *********************************************************************//
const
  OPC_PROPERTY_DATATYPE           = 1;
  OPC_PROPERTY_VALUE              = 2;
  OPC_PROPERTY_QUALITY            = 3;
  OPC_PROPERTY_TIMESTAMP          = 4;
  OPC_PROPERTY_ACCESS_RIGHTS      = 5;
  OPC_PROPERTY_SCAN_RATE          = 6;
  OPC_PROPERTY_EU_TYPE            = 7;
  OPC_PROPERTY_EU_INFO            = 8;
  OPC_PROPERTY_EU_UNITS           = 100;
  OPC_PROPERTY_DESCRIPTION        = 101;
  OPC_PROPERTY_HIGH_EU            = 102;
  OPC_PROPERTY_LOW_EU             = 103;
  OPC_PROPERTY_HIGH_IR            = 104;
  OPC_PROPERTY_LOW_IR             = 105;
  OPC_PROPERTY_CLOSE_LABEL        = 106;
  OPC_PROPERTY_OPEN_LABEL         = 107;
  OPC_PROPERTY_TIMEZONE           = 108;
  OPC_PROPERTY_CONDITION_STATUS   = 300;
  OPC_PROPERTY_ALARM_QUICK_HELP   = 301;
  OPC_PROPERTY_ALARM_AREA_LIST    = 302;
  OPC_PROPERTY_PRIMARY_ALARM_AREA = 303;
  OPC_PROPERTY_CONDITION_LOGIC    = 304;
  OPC_PROPERTY_LIMIT_EXCEEDED     = 305;
  OPC_PROPERTY_DEADBAND           = 306;
  OPC_PROPERTY_HIHI_LIMIT         = 307;
  OPC_PROPERTY_HI_LIMIT           = 308;
  OPC_PROPERTY_LO_LIMIT           = 309;
  OPC_PROPERTY_LOLO_LIMIT         = 310;
  OPC_PROPERTY_CHANGE_RATE_LIMIT  = 311;
  OPC_PROPERTY_DEVIATION_LIMIT    = 312;
  OPC_PROPERTY_SOUND_FILE         = 313;

// *********************************************************************//
// Data Access 3.0 Property Descriptions:                               //
// *********************************************************************//
const
  OPC_PROPERTY_DESC_DATATYPE           = 'Item Canonical Data Type';
  OPC_PROPERTY_DESC_VALUE              = 'Item Value';
  OPC_PROPERTY_DESC_QUALITY            = 'Item Quality';
  OPC_PROPERTY_DESC_TIMESTAMP          = 'Item Timestamp';
  OPC_PROPERTY_DESC_ACCESS_RIGHTS      = 'Item Access Rights';
  OPC_PROPERTY_DESC_SCAN_RATE          = 'Server Scan Rate';
  OPC_PROPERTY_DESC_EU_TYPE            = 'Item EU Type';
  OPC_PROPERTY_DESC_EU_INFO            = 'Item EU Info';
  OPC_PROPERTY_DESC_EU_UNITS           = 'EU Units';
  OPC_PROPERTY_DESC_DESCRIPTION        = 'Item Description';
  OPC_PROPERTY_DESC_HIGH_EU            = 'High EU';
  OPC_PROPERTY_DESC_LOW_EU             = 'Low EU';
  OPC_PROPERTY_DESC_HIGH_IR            = 'High Instrument Range';
  OPC_PROPERTY_DESC_LOW_IR             = 'Low Instrument Range';
  OPC_PROPERTY_DESC_CLOSE_LABEL        = 'Contact Close Label';
  OPC_PROPERTY_DESC_OPEN_LABEL         = 'Contact Open Label';
  OPC_PROPERTY_DESC_TIMEZONE           = 'Item Timezone';
  OPC_PROPERTY_DESC_CONDITION_STATUS   = 'Condition Status';
  OPC_PROPERTY_DESC_ALARM_QUICK_HELP   = 'Alarm Quick Help';
  OPC_PROPERTY_DESC_ALARM_AREA_LIST    = 'Alarm Area List';
  OPC_PROPERTY_DESC_PRIMARY_ALARM_AREA = 'Primary Alarm Area';
  OPC_PROPERTY_DESC_CONDITION_LOGIC    = 'Condition Logic';
  OPC_PROPERTY_DESC_LIMIT_EXCEEDED     = 'Limit Exceeded';
  OPC_PROPERTY_DESC_DEADBAND           = 'Deadband';
  OPC_PROPERTY_DESC_HIHI_LIMIT         = 'HiHi Limit';
  OPC_PROPERTY_DESC_HI_LIMIT           = 'Hi Limit';
  OPC_PROPERTY_DESC_LO_LIMIT           = 'Lo Limit';
  OPC_PROPERTY_DESC_LOLO_LIMIT         = 'LoLo Limit';
  OPC_PROPERTY_DESC_CHANGE_RATE_LIMIT  = 'Rate of Change Limit';
  OPC_PROPERTY_DESC_DEVIATION_LIMIT    = 'Deviation Limit';
  OPC_PROPERTY_DESC_SOUND_FILE         = 'Sound File';

type

// *********************************************************************//
// Forward declaration of interfaces defined in Type Library            //
// *********************************************************************//
  IOPCServer = interface;
  IOPCServerPublicGroups = interface;
  IOPCBrowseServerAddressSpace = interface;
  IOPCGroupStateMgt = interface;
  IOPCPublicGroupStateMgt = interface;
  IOPCSyncIO = interface;
  IOPCAsyncIO = interface;
  IOPCItemMgt = interface;
  IEnumOPCItemAttributes = interface;
  IOPCDataCallback = interface;
  IOPCAsyncIO2 = interface;
  IOPCItemProperties = interface;
  IOPCItemDeadbandMgt = interface;
  IOPCItemSamplingMgt = interface;
  IOPCBrowse = interface;
  IOPCItemIO = interface;
  IOPCSyncIO2 = interface;
  IOPCAsyncIO3 = interface;
  IOPCGroupStateMgt2 = interface;

// *********************************************************************//
// Declaration of structures, unions and aliases.                       //
// *********************************************************************//

⌨️ 快捷键说明

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