OPC .NET 3.0 Technical Overview OPC .NET 3.0 or Xi • OPC Xi was renamed to OPC .NET 3.0 to better reflect its purpose – to provide a .NET interface for OPC • Xi is still used informally as an abbreviated name, especially in drawings where space is at a premium. In these uses, the “X” now stands for “.NET” and the “i” for “interface. • Xi is also used in the source code since names cannot start with a ‘.’ 2 What is OPC .NET 3.0? A simple Microsoft.NET interface for securely wrapping industrial automation systems, for both local and remote access. Xi Client Xi Client Xi Client Xi Client Existing Client OPC COM Server Xi Interface Xi Secure Messaging Xi Secure Messaging Why was OPC .NET 3.0 developed? New Microsoft-based client developments have moved to .NET => These application need a native .NET interface to talk to OPC COM servers, instead of each having to develop its own. Before Xi (need a custom adapter for each type of OPC server) .NET Client Application “A” .NET Custom Adapter COM/DCOM Interface “A” .NET Client Application “B” COM/DCOM .NET Interface “B” .NET Client Application “C” Custom Adapter OPC COM Server COM/DCOM .NET Interface “C” Custom Adapter With Xi (Xi Wrapper is common to all types of OPC Servers) .NET Client Application “A” .NET Client Application “B” Xi .NET Interface .NET Client Application “C” Xi Wrapper COM/ DCOM OPC COM Server Is OPC .NET 3.0 a common interface? Yes - OPC .NET 3.0 provides access to runtime and historical data, events, and alarms, all in one interface Xi Integrated Client Xi DA Client Xi Integrated Client Xi Alarm Client Xi History Client Xi Interface OPC DA Server OPC A&E Server OPC HDA Server Security model Limited Access (e.g. no Writes) Full Access Full Access Performance model Remote Access Performance Higher Performance Highest Performance Platform model Open – Any platform using web services Open – Generally Windows Windows OPC .NET 3.0 Interface Architecture Multi-layer architecture to reduce interoperability problems Client Interface I/F Ext Client App Developerspecific code Client Base Server Interface WCF Server Base Standard code for OPC Wrappers OPC Wrapper OPC COM Server Alternate Server Implementation Standard code for the client Standard code for the server Developerspecific code Robustness • Automatic recovery from connection failure • No loss of client configuration in the server (client context) .NET Client Application X DA OPC .NET Server A&E HDA Security & Firewall Friendliness • Two ports to open: .NET Client Application HTTP Encryption TCP DA OPC .NET Server A&E HDA Security concepts • Base user privileges defined by access control list • Base encryption and authentication provided by .NET WCF • Read, write, and subscribe privileges for the user can be restricted based on location of the user and the client application being used (e.g. only approved client apps can write). • Patent pending (royalty-free license for use with OPC .NET 3.0) Security architecture Server Discovery Endpoint List of Resource Discovery Endpoints One per system (may be redundant) Resource Management Endpoint Secure One per server Access Controls List of Resources Read Endpoint List of Resources Client Application • Dynamically opened • Multiple endpoints per client • Multiple lists per endpoint Write Endpoint • Known only to the client List of Resources Subscribe Endpoint List of Resources Poll or Callback Opened only if authorized Server and endpoint discovery PNRP Enabled Clients PNRP Enabled Servers PNRP Discovery of Discovery Servers Xi Discovery of Xi Server Endpoints Manual Configuration of Discovery Server Address Non-PNRP Enabled Clients PNRP Discovery of Servers Xi Discovery Server Xi Discovery of Server Endpoints Manual Configuration of Server Address PNRP = Peer Name Resolution Protocol (Microsoft) Non-PNRP Enabled Servers OPC .NET 3.0 Functional Architecture Clients select resources (data/alarms/events) into lists, and add lists to endpoints for access System Resources Common to all clients Manage filter Client App Runtime. Data Historical Data Alarms & Events Read Write Subscribe Client-specific Context filter Historical Alarms & Events Endpoint interfaces Used to locate servers ServerDiscovery ResourceManagement Used to: • discover resources of a server, • create lists of resources, • create endpoints, and • assign lists to endpoints Read Used to read the value of list entries Write Used to update the value of list entries Subscribe Callback Poll Used to receive updates (changes) to list entries Obtaining information about the server Server Management Info Base (MIB) Server capabilities and settings accessed by the GetStandardMib() method Standard MIB Objects Vendor MIB Object descriptions Vendor MIB Objects (optional) Server-specific management object values accessed via Read/Write/Subscribe endpoints Finding objects (filtered browsing) • Browsing follows path from root • Client can build path from root if known - no need to always start from root or change browse position • Built-in generic filtering mechanism • Object attributes returned – no need to separately ask for properties Objects located by their path (e.g. A/C/G) Object Hierarchy A Object Attributes B D InstanceId Name Description ObjectTypeId DataTypeId ListDimensions C E F G Flags IsLeaf IsReadable IsWritable IsCollectingHistory FastestScanRate Roles Data lists • Data lists select data objects that are to be accessed via read/write/subscribe • Data lists can be created by the client or the server Object Hierarchy Data Lists A B D C E F data objects G Historical data lists • Historical data lists are data lists that contain historical values • Historical lists are updated as new values are received into the Data Journal Object Hierarchy Historical Data Lists A B D C E F Historical values G Alarm and event lists • Alarms and events, like data, are accessed via lists, but membership in the list is defined by filters • Events are in lists only long enough for them to be reported via a subscription • Alarms stay in lists until they are acked/inactive • Alarms and event lists can be created by the client or the server Filter Criteria Area Hierarchy Areas Alarms and Events Alarm/Event Sources Event/Alarm List Historical alarm and event lists • Historical alarm/event list membership is defined by filters • Historical lists are updated as new alarms/events are received into the Event Journal Event Journal Areas Alarm/Event Sources Historical Alarms and Events Filter Criteria Historical Event/Alarm List Interface summary Example specification page Conclusion • Additional security layered on top of traditional security mechanisms • Additional robustness features added to recover dropped connections with the server • Supports runtime and historical data, events, and alarms. • Additionally supports passthroughs and historical alarms/events • Provides: – Local access via NamedPipe bindings – LAN access via NetTcp bindings – Web access and off-platform access via REST interface & Http bindings