📄 opcda.pas
字号:
{*******************************************************}
{ }
{ 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 + -