QuickOPC.NET: How to log OPC Data Access item changes into an XML file

From OPC Labs Knowledge Base
Jump to navigation Jump to search

The example below subscribes to one process value (OPC item), and logs its changes to an XML file.

See also: QuickOPC.NET: How to log OPC Alarms and Events notifications into an XML file, QuickOPC.NET: How to log OPC Data Access item changes into an SQL database.

There are three factors that make the code very short:

  • You can use anonymous methods (or lambdas) to specify the handler (callback) for item changes.
  • The event arguments that are passed to the event handler or callback are directly serializable to XML (same as with most QuickOPC objects).
  • There is no need for reconnection logic (more about this further down in this post).
       static void Main()
       {
           Console.WriteLine("Starting up...");
           var xmlSerializer = new XmlSerializer(typeof(EasyDAItemChangedEventArgs));
           var xmlWriter = XmlWriter.Create("OpcData.xml", new XmlWriterSettings
                                       {
                                           Indent = true,
                                           CloseOutput = true
                                       });
           // The root element can have any name you need, but the name below also allows reading the log back as .NET array
           xmlWriter.WriteStartElement("ArrayOfEasyDAItemChangedEventArgs");

           Console.WriteLine("Logging for 30 seconds...");
           int handle = EasyDAClient.SharedInstance.SubscribeItem("", "OPCLabs.KitServer.2", 
               "Simulation.Incrementing (1 s)", 100,
              (_, eventArgs) =>
                  {
                      Debug.Assert(eventArgs != null);
                      xmlSerializer.Serialize(xmlWriter, eventArgs);
                  });
           System.Threading.Thread.Sleep(30 * 1000);

           Console.WriteLine("Shutting down...");
           EasyDAClient.SharedInstance.UnsubscribeItem(handle);
           xmlWriter.WriteEndElement();    // not really necessary - XmlWriter would write the end tag for us anyway
           xmlWriter.Close();

           Console.WriteLine("Finished.");
       }

The output file generated by the logger (OpcData.xml) is listed further below.

What makes this example quite nice is the fact it is is fairly complete - it is fully resistant against network problems, OPC server crashes etc. You do not need to write any additional code for that! To prove it, increase the logging time in the code to e.g. 10 minutes, start the logger, and then find and select the OPC Simulation Server process (opcrtkit.exe) in the Task Manager, and "kill it" by pressing the "End process" button. The logger will log an en exception record into the output XML. If you, however, wait for some minutes, you will see that the server process restarts itself (this is caused by the reconnection facility in the QuickOPC component), and valid values will be outputted to the output XML again. The reconnection delays can be influenced by setting various properties on EasyDAClient object.

This example project is included with the product. Please use the example from the product itself for the most up-to-date code of the example.

There is also an example that shows logging of OPC Alarms and Events into XML – in a separate application note.

OpcData.xml:

<?xml version="1.0" encoding="utf-8"?>
<Log>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Timestamp>2011-11-29T18:32:33.6248676Z</Timestamp>
     <Quality>
       <InternalValue>0</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">0</Value>
     <Timestamp>2011-11-29T18:32:33.6404926Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">1</Value>
     <Timestamp>2011-11-29T18:32:34.5154926Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">2</Value>
     <Timestamp>2011-11-29T18:32:35.4998676Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">3</Value>
     <Timestamp>2011-11-29T18:32:36.4842426Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">4</Value>
     <Timestamp>2011-11-29T18:32:37.5779926Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">5</Value>
     <Timestamp>2011-11-29T18:32:38.5623676Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">6</Value>
     <Timestamp>2011-11-29T18:32:39.5467426Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">7</Value>
     <Timestamp>2011-11-29T18:32:40.5311176Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">8</Value>
     <Timestamp>2011-11-29T18:32:41.5154926Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">9</Value>
     <Timestamp>2011-11-29T18:32:42.4998676Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">10</Value>
     <Timestamp>2011-11-29T18:32:43.4842426Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">11</Value>
     <Timestamp>2011-11-29T18:32:44.5779926Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">12</Value>
     <Timestamp>2011-11-29T18:32:45.5623676Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">13</Value>
     <Timestamp>2011-11-29T18:32:46.5467426Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">14</Value>
     <Timestamp>2011-11-29T18:32:47.5311176Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">15</Value>
     <Timestamp>2011-11-29T18:32:48.5154926Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">16</Value>
     <Timestamp>2011-11-29T18:32:49.4998676Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">17</Value>
     <Timestamp>2011-11-29T18:32:50.4842426Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">18</Value>
     <Timestamp>2011-11-29T18:32:51.5779926Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">19</Value>
     <Timestamp>2011-11-29T18:32:52.5623676Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">20</Value>
     <Timestamp>2011-11-29T18:32:53.5467426Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">21</Value>
     <Timestamp>2011-11-29T18:32:54.5311176Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">22</Value>
     <Timestamp>2011-11-29T18:32:55.5154926Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">23</Value>
     <Timestamp>2011-11-29T18:32:56.4998676Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">24</Value>
     <Timestamp>2011-11-29T18:32:57.4842426Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">25</Value>
     <Timestamp>2011-11-29T18:32:58.5779926Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">26</Value>
     <Timestamp>2011-11-29T18:32:59.5623676Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">27</Value>
     <Timestamp>2011-11-29T18:33:00.5467426Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">28</Value>
     <Timestamp>2011-11-29T18:33:01.5311176Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
 <EasyDAItemChangedEventArgs xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <ErrorCode>0</ErrorCode>
   <GroupParameters>
     <Locale>0</Locale>
     <RequestedUpdateRate>100</RequestedUpdateRate>
     <PercentDeadband>0</PercentDeadband>
   </GroupParameters>
   <Handle>12585986</Handle>
   <ItemDescriptor>
     <ItemId>Simulation.Incrementing (1 s)</ItemId>
     <AccessPath />
     <RequestedDataType>
       <InternalValue>0</InternalValue>
     </RequestedDataType>
   </ItemDescriptor>
   <ServerDescriptor>
     <MachineName />
     <ServerClass>OPCLabs.KitServer.2</ServerClass>
   </ServerDescriptor>
   <Vtq>
     <Value xsi:type="xsd:int">29</Value>
     <Timestamp>2011-11-29T18:33:02.5154926Z</Timestamp>
     <Quality>
       <InternalValue>192</InternalValue>
     </Quality>
   </Vtq>
 </EasyDAItemChangedEventArgs>
</Log>