📄 opc_ae.pas
字号:
{*******************************************************}
{ }
{ OPC Alarms and Events 1.10 }
{ }
{ Delphi conversion generated and supplied by }
{ Mike Dillamore }
{ OPC Programmers' Connection }
{ http://www.opcconnect.com/ }
{ mailto:opc@opcconnect.com }
{ }
{*******************************************************}
unit OPC_AE;
{$IFDEF VER150}
{$WARN UNSAFE_TYPE OFF}
{$ENDIF}
// ************************************************************************ //
// Type Lib: opc_aeps.dll
// IID\LCID: {65168844-5783-11D1-84A0-00608CB8A7E9}\0
// ************************************************************************ //
interface
uses
Windows, ActiveX, OPCtypes;
// *********************************************************************//
// GUIDS declared in the TypeLibrary //
// *********************************************************************//
const
LIBID_OPC_AE: TGUID = '{65168844-5783-11D1-84A0-00608CB8A7E9}';
IID_IOPCEventServer: TIID = '{65168851-5783-11D1-84A0-00608CB8A7E9}';
IID_IOPCEventSubscriptionMgt: TIID = '{65168855-5783-11D1-84A0-00608CB8A7E9}';
IID_IOPCEventAreaBrowser: TIID = '{65168857-5783-11D1-84A0-00608CB8A7E9}';
IID_IOPCEventSink: TIID = '{6516885F-5783-11D1-84A0-00608CB8A7E9}';
IID_IOPCEventServer2: TIID = '{71BBE88E-9564-4BCD-BCFC-71C558D94F2D}';
IID_IOPCEventSubscriptionMgt2: TIID = '{94C955DC-3684-4CCB-AFAB-F898CE19AAC3}';
OPCEventServerCATID: TGUID = '{58E13251-AC87-11D1-84D5-00608CB8A7E9}';
// *********************************************************************//
// Declaration of Enumerations defined in Type Library //
// *********************************************************************//
type
OPCAEBROWSEDIRECTION = TOleEnum;
const
OPCAE_BROWSE_UP = 1;
OPCAE_BROWSE_DOWN = 2;
OPCAE_BROWSE_TO = 3;
type
OPCAEBROWSETYPE = TOleEnum;
const
OPC_AREA = 1;
OPC_SOURCE = 2;
type
OPCEVENTSERVERSTATE = TOleEnum;
const
OPCAE_STATUS_RUNNING = 1;
OPCAE_STATUS_FAILED = 2;
OPCAE_STATUS_NOCONFIG = 3;
OPCAE_STATUS_SUSPENDED = 4;
OPCAE_STATUS_TEST = 5;
OPCAE_STATUS_COMM_FAULT = 6;
// *********************************************************************//
// OPC Quality flags //
// *********************************************************************//
// Masks for extracting quality subfields
// (note 'status' mask also includes 'Quality' bits)
OPC_QUALITY_MASK = $C0;
OPC_STATUS_MASK = $FC;
OPC_LIMIT_MASK = $03;
// Values for QUALITY_MASK bit field
OPC_QUALITY_BAD = $00;
OPC_QUALITY_UNCERTAIN = $40;
OPC_QUALITY_GOOD = $C0;
// STATUS_MASK Values for Quality = BAD
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;
// STATUS_MASK Values for Quality = UNCERTAIN
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
OPC_QUALITY_LOCAL_OVERRIDE = $D8;
// State bit masks
OPC_CONDITION_ENABLED = $0001;
OPC_CONDITION_ACTIVE = $0002;
OPC_CONDITION_ACKED = $0004;
// bit masks for m_wChangeMask
OPC_CHANGE_ACTIVE_STATE = $0001;
OPC_CHANGE_ACK_STATE = $0002;
OPC_CHANGE_ENABLE_STATE = $0004;
OPC_CHANGE_QUALITY = $0008;
OPC_CHANGE_SEVERITY = $0010;
OPC_CHANGE_SUBCONDITION = $0020;
OPC_CHANGE_MESSAGE = $0040;
OPC_CHANGE_ATTRIBUTE = $0080;
// dwEventType
OPC_SIMPLE_EVENT = $0001;
OPC_TRACKING_EVENT = $0002;
OPC_CONDITION_EVENT = $0004;
OPC_ALL_EVENTS = OPC_SIMPLE_EVENT or OPC_TRACKING_EVENT or
OPC_CONDITION_EVENT;
// QueryAvailableFilters() bit masks
OPC_FILTER_BY_EVENT = $0001;
OPC_FILTER_BY_CATEGORY = $0002;
OPC_FILTER_BY_SEVERITY = $0004;
OPC_FILTER_BY_AREA = $0008;
OPC_FILTER_BY_SOURCE = $0010;
type
// *********************************************************************//
// Forward declaration of interfaces defined in Type Library //
// *********************************************************************//
IOPCEventServer = interface;
IOPCEventSubscriptionMgt = interface;
IOPCEventAreaBrowser = interface;
IOPCEventSink = interface;
IOPCEventServer2 = interface;
IOPCEventSubscriptionMgt2 = interface;
// *********************************************************************//
// Declaration of structures, unions and aliases. //
// *********************************************************************//
ONEVENTSTRUCT = record
wChangeMask: Word;
wNewState: Word;
szSource: POleStr;
ftTime: TFileTime;
szMessage: POleStr;
dwEventType: DWORD;
dwEventCategory: DWORD;
dwSeverity: DWORD;
szConditionName: POleStr;
szSubconditionName: POleStr;
wQuality: Word;
wReserved: Word; // added to ensure natural alignment
bAckRequired: BOOL;
ftActiveTime: TFileTime;
dwCookie: DWORD;
dwNumEventAttrs: DWORD;
pEventAttributes: POleVariantArray;
szActorID: POleStr;
end;
PONEVENTSTRUCT = ^ONEVENTSTRUCT;
ONEVENTSTRUCTARRAY = array[0..65535] of ONEVENTSTRUCT;
PONEVENTSTRUCTARRAY = ^ONEVENTSTRUCTARRAY;
OPCEVENTSERVERSTATUS = record
ftStartTime: TFileTime;
ftCurrentTime: TFileTime;
ftLastUpdateTime: TFileTime;
dwServerState: OPCEVENTSERVERSTATE;
wMajorVersion: Word;
wMinorVersion: Word;
wBuildNumber: Word;
wReserved: Word; // added to ensure natural alignment
szVendorInfo: POleStr;
end;
POPCEVENTSERVERSTATUS = ^OPCEVENTSERVERSTATUS;
OPCCONDITIONSTATE = record
wState: Word;
wReserved1: Word; // added to ensure natural alignment
szActiveSubCondition: POleStr;
szASCDefinition: POleStr;
dwASCSeverity: DWORD;
szASCDescription: POleStr;
wQuality: Word;
wReserved2: Word; // added to ensure natural alignment
ftLastAckTime: TFileTime;
ftSubCondLastActive: TFileTime;
ftCondLastActive: TFileTime;
ftCondLastInactive: TFileTime;
szAcknowledgerID: POleStr;
szComment: POleStr;
dwNumSCs: DWORD;
pszSCNames: POleStrList;
pszSCDefinitions: POleStrList;
pdwSCSeverities: PDWORDARRAY;
pszSCDescriptions: POleStrList;
dwNumEventAttrs: DWORD;
pEventAttributes: POleVariantArray;
pErrors: PResultList;
end;
POPCCONDITIONSTATE = ^OPCCONDITIONSTATE;
// *********************************************************************//
// Interface: IOPCEventServer
// GUID: {65168851-5783-11D1-84A0-00608CB8A7E9}
// *********************************************************************//
IOPCEventServer = interface(IUnknown)
['{65168851-5783-11D1-84A0-00608CB8A7E9}']
function GetStatus(
out ppEventServerStatus: POPCEVENTSERVERSTATUS):
HResult; stdcall;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -