Industrial Automation Automation Industrielle Industrielle Automation 4 Application Layer Protocols 4.2 Open Process Control (OPC) OPC: Open Process Control Source: http://home.hit.no/~hansha/documents/lab/Lab%20Work/opc.htm Industrial Automation 2013 OPC 4.2 - 2 OPC: Open Process Control Manufacturer-independent application programming interface (API) for automation - To implement clients which can access plant data coming from remote devices (PLCs, field bus devices, real-time databases) easily - Set of commands collected in a software library (DLL) to access OPC servers OPC clients - read and write process variables, read alarms and events and acknowledge alarms, and retrieve historical data from data bases according to several criteria - Implemented on automation platforms (e.g. ABB Ax800), which may act themselves as an OPC server to publish their data, events and historical data. OPC server - Supplied by manufacturer of automation devices supplies - Communicates with its devices through a proprietary protocol - Manages several devices of the same type, several servers can run in parallel and each server can be accessed by several clients in the same network Industrial Automation 2013 OPC 4.2 - 3 OPC Overview 4.2.1 OPC Overview Usage and specifications Clients and Servers: configuration 4.2.2 OPC Data Access Objects, Types and properties Communication model 4.2.3 OPC Alarms and Events Specification Events Alarm Conditions 4.2.4 OPC Historical Data Specification Overview Industrial Automation 2013 OPC 4.2 - 4 4.2.1 What is OPC ? OPC (formerly: "OLE1 for Process Control", now: "Open Process Control") is an industry standard set up by the OPC Foundation (http://www.opcfoundation.org/) specifying the software interface (objects, methods) to a server that collects data produced by field devices and programmable logic controllers. API covered by the OPC standard application (OPC client) OPC server X OPC server (simulator) servers OPC server Y : Ethernet Field bus PLCs Brand X PLCs Brand Y Sensors/Actors 1) OLE (Object Linking and Embedding) is a Microsoft technology for connecting software components. It has since been extended by the COM / DCOM technology. It corresponds to Java Beans. Industrial Automation 2013 OPC 4.2 - 5 Before OPC visualization history data base MasterBus MMS driver ABB PLCs Industrial Automation 2013 XWAY driver Profinet driver Télémécanique PLCs Siemens PLCs OPC 4.2 - 6 With OPC Operator Historian (Information Manager) application software is written independently from the type of controller the drivers still exist, but the clients do not see them anymore ABB AC800M Industrial Automation 2013 ABB OPC server Schneider OPC server Siemens OPC server MMS XWAY ProfiNet Télémécanique TSX Siemens S7 OPC 4.2 - 7 Importance of OPC • Greatest improvement in automation since IEC 61131. • More than 150 vendors offer OPC servers to connect their PLCs, field bus devices, displays and visualization systems. • Used for data exchange between applications and for accessing databases • DLL for Automation Interface (VB,..) and Custom applications (C++,..) • Three major components: 1) OPC - DA = Data Access (widespread, mature) 2) OPC - AE = Alarms and Events 3) OPC - HDA = Historical Data Access … and some profiles* (batch,…) * A “profile” is a subset or a specialization of a standard to form a stricter standard, adapted to an application. E.g. 100 Mbit/s, full-duplex, fibre-optical Ethernet is a profile of IEEE 802.3. Industrial Automation 2013 OPC 4.2 - 8 Specification 1: OPC DA for Data Access Process variables describe the plant's state, they are generated by the sensors or calculated in the programmable logic controllers (PLCs). Process variables can be sent upon a change, on demand or when a given time elapsed. The OPC DA (Data Access) specification addresses collecting Process Variables. The main clients of OPC DA are visualization and (soft-) control. Industrial Automation 2013 OPC 4.2 - 9 Specification 2: OPC AE for Alarms and Events Events are changes in the process that need to be logged, such as "production start" Alarms are abnormal states in the process that require attention, such as "low oil pressure" OPC AE (Alarms and Events) specifies how alarms and events are subscribed, under which conditions they are filtered and sent with their associated messages. The main clients of OPC AE are the Alarms and Event loggers. determine the exact time of change (time stamping) categorize by priorities log for further use acknowledge alarms (events are not acknowledged) link to clear text explanation Industrial Automation 2013 OPC 4.2 - 10 Specification 3: HDA for Historical Data Access Historical Data are process states and events such as: process variables, operator actions, recorded alarms,... that are stored as logs in a long-term storage for later analysis. OPC HDA (Historical Data Access) specifies how historical data are retrieved from the logs in the long-term storage, filtered and aggregated (e.g. compute averages, peaks). The main client of OPC HDA are Trend Displays and Historians. Industrial Automation 2013 OPC 4.2 - 11 Beyond Microsoft: OPC UA In a move to get more independence from Microsoft and use web technology, a new specification called " Unified Architecture" (formerly. OPC XML) that uses web services for all kinds of transactions: query, read, write, subscribe,... The classical OPC DA, AE and HDA are implemented with XML / SOAP / WSDL this allows encryption and authentication of process data. OPC UA does not only standardize the interfaces, but also the transmitted data. Industrial Automation 2013 OPC 4.2 - 12 Client and Servers 4.2.1 OPC Overview Usage and specifications Clients and Servers: configuration and communication 4.2.2 OPC Data Access Objects, Types and properties Communication model 4.2.3 OPC Alarms and Events Specification Events Alarm Conditions Automation Interface 4.2.4 OPC Historical Data Specification Overview Industrial Automation 2013 OPC 4.2 - 13 Server(s) and Client(s) in the same node node client application (OPC client) OPC server devices client application (OPC client) OPC server devices devices OPC server devices Clients and servers run as parallel processes The OPC specification defines the interface between client and server in the form of objects and methods. Industrial Automation 2013 OPC 4.2 - 14 OPC for internal communication: ABB’s SCADA (800xA) as example ABB's Operator Workplace (800xA) is at the same time OPC server and OPC client. Software components (agents) within AIP expose their properties as OPC objects. Internal (within the PC) and external communication (between PCs) takes place over OPC. 800xA aspects aspects functions Asset Optimizer Enterprise Historian OPC server Windows PC process data base OPC connections OPC client ABB OPC server Industrial Automation 2013 Schneider OPC server Siemens OPC server OPC 4.2 - 15 Direct and Fieldbus access direct connection fieldbus connection client application (OPC client) client application (OPC client) (local) OPC server (local) OPC server FB Manager fieldbus I/O devices The OPC server is running all the time, even if no client is present Industrial Automation 2013 proprietary protocol can also be a pointto-point link fieldbus fieldbus FB agent FB agent PLC PLC OPC 4.2 - 16 Accessing a server in another node client application (OPC client) stub DCOM TCP/IP DCOM Limitation: does not work over firewalls. Solution: Tunneller OPC UA Industrial Automation 2013 TCP/IP TCP/IP DCOM DCOM OPC server OPC server FB Manager fieldbus OPC 4.2 - 17 Assessment Overview • What is the objective of OPC ? • On which technology does OPC rely ? • What is an OPC Server ? • What do the main OPC specifications describe ? • How can an OPC Server access data on another machine? And how does it work for OPC clients? Industrial Automation 2013 OPC 4.2 - 18 OPC Data Access 4.2.1 OPC Overview Usage and specifications Clients and Servers: configuration 4.2.2 OPC Data Access Objects, Types and properties Communication model 4.2.3 OPC Alarms and Events Specification Events Alarm Conditions Automation Interface 4.2.4 OPC Historical Data Specification Overview Industrial Automation 2013 OPC 4.2 - 19 OPC DA: Item properties The process data are represented by three dynamic properties of an item: 1. value: numerical or text 2. time-stamp: time at which this data was transmitted from the PLC to the server UTC, not local time. 3. quality: validity of the reading (not readable, dubious data, o.k.) optional static properties description: a text string describing the use and of the variable (optional) engineering unit: the unit in which the variable is expressed (optional) ID Industrial Automation 2013 V Q T D U OPC 4.2 - 20 OPC DA: Objects as viewed by the OPC server An OPC server is structured as a directory with root, branches and leaves (items) Process Line 1 Tag Name Controller 1 Controller 2 Controller_3.Prog_1 Controller_3.Prog_2 TAG TAG TAG Level_1 Level_2 An item is identified by its "fully qualified ItemID", e.g. Ramp4 "Process_Line_1.Controller_2.Level_2" Cell 1 Machine 2 Branches may contain other branches and items The structure may also be flat instead of hierarchical This structure is defined during engineering of the attached devices and sensor/actors. (Intelligent servers can configure themselves by reading the attached devices) Industrial Automation 2013 OPC 4.2 - 21 OPC DA: Objects as viewed by the OPC client A client builds its own hierarchy, using the server’s hierarchical view. Items in the server are defined by the programmer of the PLC A full-fledged PLC may export some 10’000 items, a client needs only a subset. A client builds groups, populating them with items it is interested in. Items of a group are expected to have similar real-time requirements Groups are not hierarchical, but flat. Industrial Automation 2013 OPC 4.2 - 22 OPC DA: Mapping items to groups Each client structures its items by groups, independently from the server. clients Client1 Initially, the client browses the server structure to check if the items it is interested in exist. GroupX A client registers its groups and items at the server. The server keeps the structure of all its clients. Server root Client2 GroupZ Item1 Item2 Item3 Item1 Item2 server Area 1 TAG Temperature TAG Heat_On TAG Level Area 2 TAG Empty_Valve Area 51 TAG Fill_Valve Oven_1 Tank_1 Industrial Automation 2013 OPC 4.2 - 23 OPC DA: Communication Model 4.2.1 OPC Common Overview: usage and specifications Clients and Servers: configuration 4.2.2 OPC Data Access Objects, Types and properties Communication model 4.2.3 OPC Alarms and Events Specification Events Alarm Conditions Automation Interface 4.2.4 OPC Historical Data Specification Overview Industrial Automation 2013 OPC 4.2 - 24 4.2.2 OPC DA: Example of access to a variable controller program OPC application Reactor_1.Program2 ReadItem ("OPC:Reactor1: Program2.MotorSpeed") Value: 112 OPC server load symbol table MW%1003 MotorSpeed MW%1004 Temperature … …. symbols code Get () 192.162.0.2, MW%1003) Return (MW%1003, 112) Network Reactor_1 Marker: MW%1003 Industrial Automation 2013 OPC 4.2 - 25 OPC DA: Read Communication Models (per group) synchronous client myGroup.SynchRead() asynchronous server client Call myGroup.AsyncRead() Reply server Call Reply myGroup_AsyncReadComplete() client myGroup.IsSubscribed on change ("subscription-based") server Subscribe Notify myGroup_DataChange() Notify myGroup_DataChange() Industrial Automation 2013 OPC 4.2 - 26 OPC DA: Write Communication Models (per group) client myGroup.SynchWrite() server Call client myGroup.AsyncWrite() Reply server Call Reply myGroup_AsyncWriteComplete() The OPC interface accesses only groups, not individual items. Industrial Automation 2013 OPC 4.2 - 27 OPC DA: communication paradigm OPC DA works according to the “shared memory” paradigm. This means that a newer value overwrites the older one, no queues or history are kept. The server does not guarantee that different clients see the same snapshot of the plant. The server does not guarantee that all changes to variables are registered, changes may be missed if the polling period is too long. OPC DA Client OPC DA Client OPC DA Server Industrial Automation 2013 OPC 4.2 - 28 OPC DA: Assessment 1. How does the OPC server know a) where to fetch an item? b) which items belong to which group? 2. What are the DA the read and write operations ? 3. Is communication done by items, by groups or by collection of groups ? Why? 4. Can a change of an OPC variable be notified as an event, or shall the client poll ? 5. What are the implications of the shared memory paradigm for the application developer? Industrial Automation 2013 OPC 4.2 - 29 OPC Alarms and Events 4.2.1 OPC Overview Usage and specifications Clients and Servers: configuration 4.2.2 OPC Data Access Objects, Types and properties Communication model 4.2.3 OPC Alarms and Events Specification Events Alarm Conditions 4.2.4 OPC Historical Data Specification Overview Industrial Automation 2013 OPC 4.2 - 30 Alarms and Events: Purpose The controllers (PLC) generate events in response to changes in the plant variables. together with their precise time of occurrence, type, severity and associated message for the human operator. An OPC AE server registers these events and makes them available to several clients Alarms are described as state machines and may require acknowledgement. The OPC Alarms & Events Interface gives access to the AE server, allowing to: - browse the OPC AE Server for predefined events. - enable or disable alarms and events - subscribe to alarms and events of interest - receive the event and alarm notifications with the associated attributes - acknowledge alarms Industrial Automation 2013 OPC 4.2 - 31 AE: Definitions An event is a general change of state that is relevant to the OPC server. An event signal a change: 1) in the field device ("production started") 2) in the OPC server ("alarm acknowledged") 3) in the application ("operator action") An alarm indicates a state of the process that requires attention and is relevant to the OPC server. An alarm is represented by an alarm condition, which is a state machine determining if the alarm has been enabled, triggered or acknowledged. An alarm rises several events. An event or an alarm does not transmit process values, but boolean information indicating a change of state, its originator, the time of its occurrence and a message intended for a human operator. Alarms and events may not get lost (contrarily to OPC DA, which does not guarantee completeness) Alarms and event are precisely time-stamped by their source, (contrarily to process variables, which are time-stamped by the receiving OPC server). Industrial Automation 2013 OPC 4.2 - 32 AE: communication paradigm OPC AE works according to the “message passing” paradigm, contrarily to OPC DA, that works according to the "shared memory" paradigm. This means that an event is kept in a queue until all clients have read it (or timed out). The AE server guarantees that different clients will see all events in the same sequence. OPC AE Client OPC AE Client OPC AE Server 12:34 23.114 12:34 32.334 Industrial Automation 2013 OPC 4.2 - 33 AE: Displaying Alarms and Events Alarms and events are usually displayed differently on an operator screen. - Events are displayed in an event list that can become quite long (typically 1000 entries), entries are not cleared when the source of the event returns to normal - Alarms are displayed in a short list (typically 50 alarms) appearance changes when the alarm is acknowledged, an alarm line is cleared when the alarm signal is cleared (but remains in the log). Ack checkbox Industrial Automation 2013 OPC 4.2 - 34 AE: Events 4.2.1 OPC Overview Usage and specifications Clients and Servers: configuration 4.2.2 OPC Data Access Objects, Types and properties Communication model 4.2.3 OPC Alarms and Events Specification Events Alarm Conditions 4.2.4 OPC Historical Data Specification Overview Industrial Automation 2013 OPC 4.2 - 35 AE: Events kinds OPC AE defines three kinds of events: 1. simple: process control system related events (change of a boolean variable) 2. condition-related: notifies a change of an alarm condition (CLEARED, ACKNOWLEDGED), (see later) 3. tracking-related: origin outside of the process (e.g. operator intervention) Industrial Automation 2013 OPC 4.2 - 36 AE: Event- identification An event is identified by - its source (the object that generates the event. e.g. Tank1) and - the event name (which can be the same as in another object, e.g. HiLevelCond) HiLevelCond HiLevelCond event event LoLevelCond LoLevelCond event Tank1 event event name Tank2 event signal (boolean expression) is an external signal to be used ?(boolean) signal name for external signal (20 characters) name of the source (30 characters) message (60 characters) Industrial Automation 2013 OPC 4.2 - 37 AE: Events - Notification Tank1LevelHigh_SimpleEvent (source, timestamp, message, severity, category) AE Client specified communication COM/DCOM OPC AE Server queue unspecified communication network, fieldbus or internal bus event notification message timestamp Controller Event FB Tank1 Plant Industrial Automation 2013 Level Switch OPC 4.2 - 38 AE: Events - Time Stamp There are three places where events can be time-stamped: - at the device that originally produced the data (external event - low-level event) allowing Sequence-Of-Events with a high accuracy, down to microseconds - at the controller, (internal event) using the controller's clock to time-stamp messages giving accuracy not greater than the period of the tasks, about 1 ms. - at the OPC Server, when an event message arrives (tracking events) not more accurate than DA, about 10 ms) The OPC server can be configured to register the time stamp at the instant of the event transition (positive or negative) and the instant of the acknowledgement. Industrial Automation 2013 OPC 4.2 - 39 AE: Alarm conditions 4.2.1 OPC Common Overview: usage and specifications Clients and Servers: configuration 4.2.2 OPC Data Access Objects, Types and properties Communication model 4.2.3 OPC Alarms and Events Specification Events Alarm Conditions 4.2.4 OPC Historical Data Specification Overview Industrial Automation 2013 OPC 4.2 - 40 AE: Alarms - Condition Definition An (alarm) condition is described in a named state machine The condition state is defined by three variables: • Enabled: the condition is allowed to send event notifications • Active: the alarm signal is true • Acknowledged: the alarm has been acknowledged Alarm signal (e.g. FIC101.PV > 100 AND FIC101.PV < 150) Acknowledgement signal (a positive transition of a boolean variable) Condition Condition state Enable (positive transition) Disable (positive transition) Industrial Automation 2013 OPC 4.2 - 41 AE: Alarms - Condition states and acknowledgement event notification alarm signal acknowledgement condition state Inactive Acked Active Active Unacked Acked Inactive Acked Active Inactive Unacked Unacked Inactive Unacked Inactive Acked alarm_signal Enabled Inactive Acked condition state transitions (here: always enabled) Ack alarm_signal alarm_signal Enabled Inactive Unacked Enabled Active Unacked Ack Enabled Active Acked alarm_signal An event is generated each time the alarm signal changes state, or is acknowledged Industrial Automation 2013 OPC 4.2 - 42 AE: Alarms - Acknowledgement An alarm condition becomes active when the PLC produces an alarm signal describing an abnormal state defined by the application (e.g. the level of the tank is too high). The operator is expected to acknowledge this condition (client ack) Alternatively, a local operator may use a button or HMI that the PLC reads (field ack) event notification Tank1Level_ConditionEvent AE Client client ack (acknowledger ID) COM / DCOM OPC AE Server Network, field bus, or internal bus message LevelHigh Condition timestamp controller Alarm Signal Industrial Automation 2013 AckButton (field ack) OPC 4.2 - 43 AE: Summary alarms and events Event Alarm AE Client AE Client COM / DCOM OPC AE Server event notification (source, timestamp, message) OPC AE Server alarm notification (source, timestamp, message, condition, subcondition, severity, type) message timestamp Event FB message controller event Industrial Automation 2013 Condition controller alarm ack OPC 4.2 - 44 OPC A&E: Assessment 1. What is the difference between Alarms and Events? 2. Where are Alarms and Events time stamped? 3. How does the “message passing” paradigm influence the OPC client application developer? Industrial Automation 2013 OPC 4.2 - 45 OPC Common Overview 4.2.1 OPC Overview Usage and specifications Clients and Servers: configuration 4.2.2 OPC Data Access Objects, Types and properties Communication model 4.2.3 OPC Alarms and Events Specification Events Alarm Conditions 4.2.4 OPC Historical Data Specification Overview Industrial Automation 2013 OPC 4.2 - 46 Historian Example GE Fanuc/Intellution iHistorian (iFix...) Questions to the historian: What was the value of FIC101 last week ? What was the flow average during October ? Which were the daily averages in October ? What was the total flow in each month ? How much fuel did we use for the batch ? Give the answers in form of tables, pie diagrams, spreadsheet, reports Features: Unlimited Point Collection Sub-Second Data Collection Rates Enhanced Data Compression True Thin Client Administration Fault Tolerant Architecture Industrial Automation 2013 Data collection, archiving and retrieval Report generation Computations (e.g. VBScript) Secure access (FDA 21 CFR 11) 20'000 actions/ s, Up to 100'000 data points OPC 4.2 - 47 HDA: Historical Data Access HDA Clients e.g. Trend Analysis e.g. Event Logger independent processes OPC HDA Server hidden calculations history database raw and ordered data collector proprietary data acquisition OPC DA Server Field device Industrial Automation 2013 Field device OPC 4.2 - 48 HDA: Purpose An OPC HDA server gives access to a historical data base (logs) in which data from the process have been collected and time-stamped, possibly through an OPC DA interface. The OPC HDA interface clients, such as trend analysis, product tracking or data mining, that require ordered access these data logs. The OPC HDA interface allows to: - browse the historical data base - retrieve data through proper filtering, e.g. by date range, by identity, by property - build aggregates over the retrieved data, such as average, minimum, maximum. - enter new entries, correct entries or remove entries - enter / delete annotations in the history data base Industrial Automation 2013 OPC 4.2 - 49 HDA: Raw log 12.3.02 13:40 12.3.02 13:40 12.3.02 13:40 12.3.02 13:40 12.3.02 13:41 12.3.02 13:41 12.3.02 13:41 12.3.02 13:41 12.3.02 13:41 12.3.02 13:41 12.3.02 13:41 12.3.02 13:42 12.3.02 13:42 12.3.02 13:42 Gpcpt2ofpbonne Cpt2bac Gpcpt2bac Gpcptbe2 Gpcpt1bac Gpcpt1ofpbonne Gpcptae2 Cpt1bac Gpdefr2 Gpvoydef Gpr3tempscycleprd Gpstn1e1 Gpalarme1 Gpalarme2 4824 50 70 45 151 4826 45 49 64 2 318 16 0 0 12.3.02 13:43 Gpetatmodemarche 2 1346 1 16 0 317 0 0 0 1 1992 435 1 1 0 4823 12.3.02 13:43 12.3.02 13:43 12.3.02 13:43 12.3.02 13:43 12.3.02 13:43 12.3.02 13:43 12.3.02 13:43 12.3.02 13:43 12.3.02 13:44 12.3.02 13:44 12.3.02 13:44 12.3.02 13:44 12.3.02 13:44 12.3.02 13:44 12.3.02 13:44 Gptpscycle Gpetatmodemarche Gpdefgene1 Gpetatmodemarche Gptpscycle Gpdefr2 Gpvoydef Gpdefgene1 Gpetatmodemarche Gpr2tempscycleprd Gptpscycle Gpalarme3 Gpalarme4 Gpalarme3 Gpcpt2ofpbonne Industrial Automation 2013 By definition, values are registered when they change. (even if data are acquired by periodic polling) Data in the historical database are identified by their • itemID (here, represented by their name), • value, (of the respective type) • quality (good, stale, bad), and • timestamp (UTC). OPC 4.2 - 50 HDA: How to reduce raw data (even before HDA comes into play) Data sent to the OPC DA server on change, collector records data in a circular buffer log Since storage capacity is limited, data are reduced by: 1. if a variable is received more often than the log's minimal storage interval (e.g. 1s), the log keeps the latest of all values of the interval 2. if (and only if) a received variable changed by more than the "exception deviation" (e.g. 5%, analog values only), it is entered into the log. 3. if a variable changed by less than the exception deviation, it may be forced into the log after the log's maximum storage interval (e.g. 4 s) elapsed. min time max time max time max time max exception deviation min time = process value (event) = log entry If the time scale of the log is smaller than that of the trend display in this case, values have to be interpolated to be displayed correctly Industrial Automation 2013 OPC 4.2 - 51 HDA Application: Trend Display Parameters: log: how were data sampled • time scale (with possible offset, zoom, pan) • amplitude scale (low range, high range, scale units) • style: smoothed, stepped, filled (several ways to display the same data) • extrapolate: how to display values not received (e.g. because they did not yet change) Industrial Automation 2013 OPC 4.2 - 52 HDA: Hierarchical logs long-term log 1 hour_forever 5.2 MB / Year 1 2 3 27 28 29 30 september octobre 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 october 1 mn_7 days log 6 MB d-7 1s_24 hours log: 50 traces @ 12 B 52 MB 23 24 1 2 3 d-6 4 5 d-5 6 7 8 d-4 9 10 d-3 11 12 13 A hierarchical log is built on the data contained in the parent log. To reduce the log size, several aggregations can be applied: - record only maximum, minimum, average over a period, etc... Industrial Automation 2013 d-2 14 15 16 yesterday 17 18 19 today 20 21 22 Actual data OPC 4.2 - 53 Toy Examples: Logging Temperature http://home.hit.no/~hansha/documents/subjects/IA6209/project/IA6209%20Project%20Work%20-%20Weather%20System.pdf Industrial Automation 2013 OPC 4.2 - 54 Real-Life Examples and Exercise Integration of redundant GE Mark V turbine controllers at a power plant The controllers were going to tie into the plant’s main DCS, an ABB Advant control system. Process Portal B and MicroSCADA client applications were used to visualize process data from the turbine controllers. Exercise: Draw schema of system and describe which OPC specifications are used and how. Wind Generation AES Wind Generation manages 7 different wind farms across the United States, five of which comprise more than 500 turbines, with a total generating capacity of over 700 MW. There are six different turbine models, from four different manufacturers. Exercise: Explain which OPC concepts are useful in this context and how they can be applied to support a SCADA system http://www.matrikonopc.com/portal/downloads.aspx?dID=132 and https://www.matrikonopc.com/portal/downloads/case_studies/AESWindGeneration_OPC.pdf Industrial Automation 2013 OPC 4.2 - 55 To probe further…. OPC Foundation: Specifications http://www.opcfoundation.org SoftwareToolbox Examples in Visual Basic http://www.softwaretoolbox.com/Tech_Support/TechExpertiseCenter/OPC/opc.html The Code Project OPC and .NET http://www.codeproject.com/useritems/opcdotnet.asp Matrikon Free client and server: http://www.matrikon.com WinTech Toolkit for an OPC server http://www.win-tech.com/html/opcstk.htm NewAge Automation Toolkit for an OPC server http://www.newageautomation.com Industrial Automation 2013 OPC 4.2 - 56