00001 00002 // DO NOT EDIT THIS FILE! 00003 // It is automatically generated from opcfoundation.org schemas. 00004 // 00005 00006 #include "standard_address_space_parts.h" 00007 #include <opc/ua/protocol/string_utils.h> 00008 #include <opc/common/addons_core/addon.h> 00009 #include <opc/ua/protocol/strings.h> 00010 #include <opc/ua/protocol/variable_access_level.h> 00011 #include <opc/ua/services/node_management.h> 00012 00013 #include <algorithm> 00014 #include <iostream> 00015 #include <map> 00016 00017 namespace OpcUa 00018 { 00019 void CreateAddressSpacePart13(OpcUa::NodeManagementServices& registry) 00020 { 00021 00022 { 00023 AddNodesItem node; 00024 node.RequestedNewNodeId = ToNodeId("i=11187"); 00025 node.BrowseName = ToQualifiedName("AggregateConfigurationType"); 00026 node.Class = NodeClass::ObjectType; 00027 node.ParentNodeId = ToNodeId("i=58"); 00028 node.ReferenceTypeId = ReferenceId::HasSubtype; 00029 ObjectTypeAttributes attrs; 00030 attrs.DisplayName = LocalizedText("AggregateConfigurationType"); 00031 attrs.IsAbstract = false; 00032 node.Attributes = attrs; 00033 registry.AddNodes(std::vector<AddNodesItem>{node}); 00034 std::vector<AddReferencesItem> refs; 00035 { 00036 AddReferencesItem ref; 00037 ref.IsForward = true; 00038 ref.ReferenceTypeId = ReferenceId::HasProperty; 00039 ref.SourceNodeId = ToNodeId("i=11187"); 00040 ref.TargetNodeClass = NodeClass::DataType; 00041 ref.TargetNodeId = ToNodeId("i=11188"); 00042 refs.push_back(ref); 00043 } 00044 { 00045 AddReferencesItem ref; 00046 ref.IsForward = true; 00047 ref.ReferenceTypeId = ReferenceId::HasProperty; 00048 ref.SourceNodeId = ToNodeId("i=11187"); 00049 ref.TargetNodeClass = NodeClass::DataType; 00050 ref.TargetNodeId = ToNodeId("i=11189"); 00051 refs.push_back(ref); 00052 } 00053 { 00054 AddReferencesItem ref; 00055 ref.IsForward = true; 00056 ref.ReferenceTypeId = ReferenceId::HasProperty; 00057 ref.SourceNodeId = ToNodeId("i=11187"); 00058 ref.TargetNodeClass = NodeClass::DataType; 00059 ref.TargetNodeId = ToNodeId("i=11190"); 00060 refs.push_back(ref); 00061 } 00062 { 00063 AddReferencesItem ref; 00064 ref.IsForward = true; 00065 ref.ReferenceTypeId = ReferenceId::HasProperty; 00066 ref.SourceNodeId = ToNodeId("i=11187"); 00067 ref.TargetNodeClass = NodeClass::DataType; 00068 ref.TargetNodeId = ToNodeId("i=11191"); 00069 refs.push_back(ref); 00070 } 00071 registry.AddReferences(refs); 00072 } 00073 00074 { 00075 AddNodesItem node; 00076 node.RequestedNewNodeId = ToNodeId("i=11188"); 00077 node.BrowseName = ToQualifiedName("TreatUncertainAsBad"); 00078 node.Class = NodeClass::Variable; 00079 node.ParentNodeId = ToNodeId("i=11187"); 00080 node.ReferenceTypeId = ReferenceId::HasProperty; 00081 node.TypeDefinition = ToNodeId("i=68"); 00082 VariableAttributes attrs; 00083 attrs.DisplayName = LocalizedText("TreatUncertainAsBad"); 00084 attrs.Type = ObjectId::Boolean; 00085 attrs.Rank = -1; 00086 node.Attributes = attrs; 00087 registry.AddNodes(std::vector<AddNodesItem>{node}); 00088 std::vector<AddReferencesItem> refs; 00089 { 00090 AddReferencesItem ref; 00091 ref.IsForward = true; 00092 ref.ReferenceTypeId = ReferenceId::HasModellingRule; 00093 ref.SourceNodeId = ToNodeId("i=11188"); 00094 ref.TargetNodeClass = NodeClass::DataType; 00095 ref.TargetNodeId = ToNodeId("i=78"); 00096 refs.push_back(ref); 00097 } 00098 registry.AddReferences(refs); 00099 } 00100 00101 { 00102 AddNodesItem node; 00103 node.RequestedNewNodeId = ToNodeId("i=11189"); 00104 node.BrowseName = ToQualifiedName("PercentDataBad"); 00105 node.Class = NodeClass::Variable; 00106 node.ParentNodeId = ToNodeId("i=11187"); 00107 node.ReferenceTypeId = ReferenceId::HasProperty; 00108 node.TypeDefinition = ToNodeId("i=68"); 00109 VariableAttributes attrs; 00110 attrs.DisplayName = LocalizedText("PercentDataBad"); 00111 attrs.Type = ObjectId::Byte; 00112 attrs.Rank = -1; 00113 node.Attributes = attrs; 00114 registry.AddNodes(std::vector<AddNodesItem>{node}); 00115 std::vector<AddReferencesItem> refs; 00116 { 00117 AddReferencesItem ref; 00118 ref.IsForward = true; 00119 ref.ReferenceTypeId = ReferenceId::HasModellingRule; 00120 ref.SourceNodeId = ToNodeId("i=11189"); 00121 ref.TargetNodeClass = NodeClass::DataType; 00122 ref.TargetNodeId = ToNodeId("i=78"); 00123 refs.push_back(ref); 00124 } 00125 registry.AddReferences(refs); 00126 } 00127 00128 { 00129 AddNodesItem node; 00130 node.RequestedNewNodeId = ToNodeId("i=11190"); 00131 node.BrowseName = ToQualifiedName("PercentDataGood"); 00132 node.Class = NodeClass::Variable; 00133 node.ParentNodeId = ToNodeId("i=11187"); 00134 node.ReferenceTypeId = ReferenceId::HasProperty; 00135 node.TypeDefinition = ToNodeId("i=68"); 00136 VariableAttributes attrs; 00137 attrs.DisplayName = LocalizedText("PercentDataGood"); 00138 attrs.Type = ObjectId::Byte; 00139 attrs.Rank = -1; 00140 node.Attributes = attrs; 00141 registry.AddNodes(std::vector<AddNodesItem>{node}); 00142 std::vector<AddReferencesItem> refs; 00143 { 00144 AddReferencesItem ref; 00145 ref.IsForward = true; 00146 ref.ReferenceTypeId = ReferenceId::HasModellingRule; 00147 ref.SourceNodeId = ToNodeId("i=11190"); 00148 ref.TargetNodeClass = NodeClass::DataType; 00149 ref.TargetNodeId = ToNodeId("i=78"); 00150 refs.push_back(ref); 00151 } 00152 registry.AddReferences(refs); 00153 } 00154 00155 { 00156 AddNodesItem node; 00157 node.RequestedNewNodeId = ToNodeId("i=11191"); 00158 node.BrowseName = ToQualifiedName("UseSlopedExtrapolation"); 00159 node.Class = NodeClass::Variable; 00160 node.ParentNodeId = ToNodeId("i=11187"); 00161 node.ReferenceTypeId = ReferenceId::HasProperty; 00162 node.TypeDefinition = ToNodeId("i=68"); 00163 VariableAttributes attrs; 00164 attrs.DisplayName = LocalizedText("UseSlopedExtrapolation"); 00165 attrs.Type = ObjectId::Boolean; 00166 attrs.Rank = -1; 00167 node.Attributes = attrs; 00168 registry.AddNodes(std::vector<AddNodesItem>{node}); 00169 std::vector<AddReferencesItem> refs; 00170 { 00171 AddReferencesItem ref; 00172 ref.IsForward = true; 00173 ref.ReferenceTypeId = ReferenceId::HasModellingRule; 00174 ref.SourceNodeId = ToNodeId("i=11191"); 00175 ref.TargetNodeClass = NodeClass::DataType; 00176 ref.TargetNodeId = ToNodeId("i=78"); 00177 refs.push_back(ref); 00178 } 00179 registry.AddReferences(refs); 00180 } 00181 00182 { 00183 AddNodesItem node; 00184 node.RequestedNewNodeId = ToNodeId("i=2341"); 00185 node.BrowseName = ToQualifiedName("Interpolative"); 00186 node.Class = NodeClass::Object; 00187 node.TypeDefinition = ToNodeId("i=2340"); 00188 ObjectAttributes attrs; 00189 attrs.Description = LocalizedText("At the beginning of each interval, retrieve the calculated value from the data points on either side of the requested timestamp."); 00190 attrs.DisplayName = LocalizedText("Interpolative"); 00191 attrs.EventNotifier = 0; 00192 node.Attributes = attrs; 00193 registry.AddNodes(std::vector<AddNodesItem>{node}); 00194 } 00195 00196 { 00197 AddNodesItem node; 00198 node.RequestedNewNodeId = ToNodeId("i=2342"); 00199 node.BrowseName = ToQualifiedName("Average"); 00200 node.Class = NodeClass::Object; 00201 node.TypeDefinition = ToNodeId("i=2340"); 00202 ObjectAttributes attrs; 00203 attrs.Description = LocalizedText("Retrieve the average value of the data over the interval."); 00204 attrs.DisplayName = LocalizedText("Average"); 00205 attrs.EventNotifier = 0; 00206 node.Attributes = attrs; 00207 registry.AddNodes(std::vector<AddNodesItem>{node}); 00208 } 00209 00210 { 00211 AddNodesItem node; 00212 node.RequestedNewNodeId = ToNodeId("i=2343"); 00213 node.BrowseName = ToQualifiedName("TimeAverage"); 00214 node.Class = NodeClass::Object; 00215 node.TypeDefinition = ToNodeId("i=2340"); 00216 ObjectAttributes attrs; 00217 attrs.Description = LocalizedText("Retrieve the time weighted average data over the interval using Interpolated Bounding Values."); 00218 attrs.DisplayName = LocalizedText("TimeAverage"); 00219 attrs.EventNotifier = 0; 00220 node.Attributes = attrs; 00221 registry.AddNodes(std::vector<AddNodesItem>{node}); 00222 } 00223 00224 { 00225 AddNodesItem node; 00226 node.RequestedNewNodeId = ToNodeId("i=11285"); 00227 node.BrowseName = ToQualifiedName("TimeAverage2"); 00228 node.Class = NodeClass::Object; 00229 node.TypeDefinition = ToNodeId("i=2340"); 00230 ObjectAttributes attrs; 00231 attrs.Description = LocalizedText("Retrieve the time weighted average data over the interval using Simple Bounding Values."); 00232 attrs.DisplayName = LocalizedText("TimeAverage2"); 00233 attrs.EventNotifier = 0; 00234 node.Attributes = attrs; 00235 registry.AddNodes(std::vector<AddNodesItem>{node}); 00236 } 00237 00238 { 00239 AddNodesItem node; 00240 node.RequestedNewNodeId = ToNodeId("i=2344"); 00241 node.BrowseName = ToQualifiedName("Total"); 00242 node.Class = NodeClass::Object; 00243 node.TypeDefinition = ToNodeId("i=2340"); 00244 ObjectAttributes attrs; 00245 attrs.Description = LocalizedText("Retrieve the total (time integral) of the data over the interval using Interpolated Bounding Values."); 00246 attrs.DisplayName = LocalizedText("Total"); 00247 attrs.EventNotifier = 0; 00248 node.Attributes = attrs; 00249 registry.AddNodes(std::vector<AddNodesItem>{node}); 00250 } 00251 00252 { 00253 AddNodesItem node; 00254 node.RequestedNewNodeId = ToNodeId("i=11304"); 00255 node.BrowseName = ToQualifiedName("Total2"); 00256 node.Class = NodeClass::Object; 00257 node.TypeDefinition = ToNodeId("i=2340"); 00258 ObjectAttributes attrs; 00259 attrs.Description = LocalizedText("Retrieve the total (time integral) of the data over the interval using Simple Bounding Values."); 00260 attrs.DisplayName = LocalizedText("Total2"); 00261 attrs.EventNotifier = 0; 00262 node.Attributes = attrs; 00263 registry.AddNodes(std::vector<AddNodesItem>{node}); 00264 } 00265 00266 { 00267 AddNodesItem node; 00268 node.RequestedNewNodeId = ToNodeId("i=2346"); 00269 node.BrowseName = ToQualifiedName("Minimum"); 00270 node.Class = NodeClass::Object; 00271 node.TypeDefinition = ToNodeId("i=2340"); 00272 ObjectAttributes attrs; 00273 attrs.Description = LocalizedText("Retrieve the minimum raw value in the interval with the timestamp of the start of the interval."); 00274 attrs.DisplayName = LocalizedText("Minimum"); 00275 attrs.EventNotifier = 0; 00276 node.Attributes = attrs; 00277 registry.AddNodes(std::vector<AddNodesItem>{node}); 00278 } 00279 00280 { 00281 AddNodesItem node; 00282 node.RequestedNewNodeId = ToNodeId("i=2347"); 00283 node.BrowseName = ToQualifiedName("Maximum"); 00284 node.Class = NodeClass::Object; 00285 node.TypeDefinition = ToNodeId("i=2340"); 00286 ObjectAttributes attrs; 00287 attrs.Description = LocalizedText("Retrieve the maximum raw value in the interval with the timestamp of the start of the interval."); 00288 attrs.DisplayName = LocalizedText("Maximum"); 00289 attrs.EventNotifier = 0; 00290 node.Attributes = attrs; 00291 registry.AddNodes(std::vector<AddNodesItem>{node}); 00292 } 00293 00294 { 00295 AddNodesItem node; 00296 node.RequestedNewNodeId = ToNodeId("i=2348"); 00297 node.BrowseName = ToQualifiedName("MinimumActualTime"); 00298 node.Class = NodeClass::Object; 00299 node.TypeDefinition = ToNodeId("i=2340"); 00300 ObjectAttributes attrs; 00301 attrs.Description = LocalizedText("Retrieve the minimum value in the interval and the Timestamp of the minimum value."); 00302 attrs.DisplayName = LocalizedText("MinimumActualTime"); 00303 attrs.EventNotifier = 0; 00304 node.Attributes = attrs; 00305 registry.AddNodes(std::vector<AddNodesItem>{node}); 00306 } 00307 00308 { 00309 AddNodesItem node; 00310 node.RequestedNewNodeId = ToNodeId("i=2349"); 00311 node.BrowseName = ToQualifiedName("MaximumActualTime"); 00312 node.Class = NodeClass::Object; 00313 node.TypeDefinition = ToNodeId("i=2340"); 00314 ObjectAttributes attrs; 00315 attrs.Description = LocalizedText("Retrieve the maximum value in the interval and the Timestamp of the maximum value."); 00316 attrs.DisplayName = LocalizedText("MaximumActualTime"); 00317 attrs.EventNotifier = 0; 00318 node.Attributes = attrs; 00319 registry.AddNodes(std::vector<AddNodesItem>{node}); 00320 } 00321 00322 { 00323 AddNodesItem node; 00324 node.RequestedNewNodeId = ToNodeId("i=2350"); 00325 node.BrowseName = ToQualifiedName("Range"); 00326 node.Class = NodeClass::Object; 00327 node.TypeDefinition = ToNodeId("i=2340"); 00328 ObjectAttributes attrs; 00329 attrs.Description = LocalizedText("Retrieve the difference between the minimum and maximum Value over the interval."); 00330 attrs.DisplayName = LocalizedText("Range"); 00331 attrs.EventNotifier = 0; 00332 node.Attributes = attrs; 00333 registry.AddNodes(std::vector<AddNodesItem>{node}); 00334 } 00335 00336 { 00337 AddNodesItem node; 00338 node.RequestedNewNodeId = ToNodeId("i=11286"); 00339 node.BrowseName = ToQualifiedName("Minimum2"); 00340 node.Class = NodeClass::Object; 00341 node.TypeDefinition = ToNodeId("i=2340"); 00342 ObjectAttributes attrs; 00343 attrs.Description = LocalizedText("Retrieve the minimum value in the interval including the Simple Bounding Values."); 00344 attrs.DisplayName = LocalizedText("Minimum2"); 00345 attrs.EventNotifier = 0; 00346 node.Attributes = attrs; 00347 registry.AddNodes(std::vector<AddNodesItem>{node}); 00348 } 00349 00350 { 00351 AddNodesItem node; 00352 node.RequestedNewNodeId = ToNodeId("i=11287"); 00353 node.BrowseName = ToQualifiedName("Maximum2"); 00354 node.Class = NodeClass::Object; 00355 node.TypeDefinition = ToNodeId("i=2340"); 00356 ObjectAttributes attrs; 00357 attrs.Description = LocalizedText("Retrieve the maximum value in the interval including the Simple Bounding Values."); 00358 attrs.DisplayName = LocalizedText("Maximum2"); 00359 attrs.EventNotifier = 0; 00360 node.Attributes = attrs; 00361 registry.AddNodes(std::vector<AddNodesItem>{node}); 00362 } 00363 00364 { 00365 AddNodesItem node; 00366 node.RequestedNewNodeId = ToNodeId("i=11305"); 00367 node.BrowseName = ToQualifiedName("MinimumActualTime2"); 00368 node.Class = NodeClass::Object; 00369 node.TypeDefinition = ToNodeId("i=2340"); 00370 ObjectAttributes attrs; 00371 attrs.Description = LocalizedText("Retrieve the minimum value with the actual timestamp including the Simple Bounding Values."); 00372 attrs.DisplayName = LocalizedText("MinimumActualTime2"); 00373 attrs.EventNotifier = 0; 00374 node.Attributes = attrs; 00375 registry.AddNodes(std::vector<AddNodesItem>{node}); 00376 } 00377 00378 { 00379 AddNodesItem node; 00380 node.RequestedNewNodeId = ToNodeId("i=11306"); 00381 node.BrowseName = ToQualifiedName("MaximumActualTime2"); 00382 node.Class = NodeClass::Object; 00383 node.TypeDefinition = ToNodeId("i=2340"); 00384 ObjectAttributes attrs; 00385 attrs.Description = LocalizedText("Retrieve the maximum value with the actual timestamp including the Simple Bounding Values."); 00386 attrs.DisplayName = LocalizedText("MaximumActualTime2"); 00387 attrs.EventNotifier = 0; 00388 node.Attributes = attrs; 00389 registry.AddNodes(std::vector<AddNodesItem>{node}); 00390 } 00391 00392 { 00393 AddNodesItem node; 00394 node.RequestedNewNodeId = ToNodeId("i=11288"); 00395 node.BrowseName = ToQualifiedName("Range2"); 00396 node.Class = NodeClass::Object; 00397 node.TypeDefinition = ToNodeId("i=2340"); 00398 ObjectAttributes attrs; 00399 attrs.Description = LocalizedText("Retrieve the difference between the Minimum2 and Maximum2 value over the interval."); 00400 attrs.DisplayName = LocalizedText("Range2"); 00401 attrs.EventNotifier = 0; 00402 node.Attributes = attrs; 00403 registry.AddNodes(std::vector<AddNodesItem>{node}); 00404 } 00405 00406 { 00407 AddNodesItem node; 00408 node.RequestedNewNodeId = ToNodeId("i=2351"); 00409 node.BrowseName = ToQualifiedName("AnnotationCount"); 00410 node.Class = NodeClass::Object; 00411 node.TypeDefinition = ToNodeId("i=2340"); 00412 ObjectAttributes attrs; 00413 attrs.Description = LocalizedText("Retrieve the number of Annotations in the interval."); 00414 attrs.DisplayName = LocalizedText("AnnotationCount"); 00415 attrs.EventNotifier = 0; 00416 node.Attributes = attrs; 00417 registry.AddNodes(std::vector<AddNodesItem>{node}); 00418 } 00419 00420 { 00421 AddNodesItem node; 00422 node.RequestedNewNodeId = ToNodeId("i=2352"); 00423 node.BrowseName = ToQualifiedName("Count"); 00424 node.Class = NodeClass::Object; 00425 node.TypeDefinition = ToNodeId("i=2340"); 00426 ObjectAttributes attrs; 00427 attrs.Description = LocalizedText("Retrieve the number of raw values over the interval."); 00428 attrs.DisplayName = LocalizedText("Count"); 00429 attrs.EventNotifier = 0; 00430 node.Attributes = attrs; 00431 registry.AddNodes(std::vector<AddNodesItem>{node}); 00432 } 00433 00434 { 00435 AddNodesItem node; 00436 node.RequestedNewNodeId = ToNodeId("i=11307"); 00437 node.BrowseName = ToQualifiedName("DurationInStateZero"); 00438 node.Class = NodeClass::Object; 00439 node.TypeDefinition = ToNodeId("i=2340"); 00440 ObjectAttributes attrs; 00441 attrs.Description = LocalizedText("Retrieve the time a Boolean or numeric was in a zero state using Simple Bounding Values."); 00442 attrs.DisplayName = LocalizedText("DurationInStateZero"); 00443 attrs.EventNotifier = 0; 00444 node.Attributes = attrs; 00445 registry.AddNodes(std::vector<AddNodesItem>{node}); 00446 } 00447 00448 { 00449 AddNodesItem node; 00450 node.RequestedNewNodeId = ToNodeId("i=11308"); 00451 node.BrowseName = ToQualifiedName("DurationInStateNonZero"); 00452 node.Class = NodeClass::Object; 00453 node.TypeDefinition = ToNodeId("i=2340"); 00454 ObjectAttributes attrs; 00455 attrs.Description = LocalizedText("Retrieve the time a Boolean or numeric was in a non-zero state using Simple Bounding Values."); 00456 attrs.DisplayName = LocalizedText("DurationInStateNonZero"); 00457 attrs.EventNotifier = 0; 00458 node.Attributes = attrs; 00459 registry.AddNodes(std::vector<AddNodesItem>{node}); 00460 } 00461 00462 { 00463 AddNodesItem node; 00464 node.RequestedNewNodeId = ToNodeId("i=2355"); 00465 node.BrowseName = ToQualifiedName("NumberOfTransitions"); 00466 node.Class = NodeClass::Object; 00467 node.TypeDefinition = ToNodeId("i=2340"); 00468 ObjectAttributes attrs; 00469 attrs.Description = LocalizedText("Retrieve the number of changes between zero and non-zero that a Boolean or Numeric value experienced in the interval."); 00470 attrs.DisplayName = LocalizedText("NumberOfTransitions"); 00471 attrs.EventNotifier = 0; 00472 node.Attributes = attrs; 00473 registry.AddNodes(std::vector<AddNodesItem>{node}); 00474 } 00475 00476 { 00477 AddNodesItem node; 00478 node.RequestedNewNodeId = ToNodeId("i=2357"); 00479 node.BrowseName = ToQualifiedName("Start"); 00480 node.Class = NodeClass::Object; 00481 node.TypeDefinition = ToNodeId("i=2340"); 00482 ObjectAttributes attrs; 00483 attrs.Description = LocalizedText("Retrieve the value at the beginning of the interval using Interpolated Bounding Values."); 00484 attrs.DisplayName = LocalizedText("Start"); 00485 attrs.EventNotifier = 0; 00486 node.Attributes = attrs; 00487 registry.AddNodes(std::vector<AddNodesItem>{node}); 00488 } 00489 00490 { 00491 AddNodesItem node; 00492 node.RequestedNewNodeId = ToNodeId("i=2358"); 00493 node.BrowseName = ToQualifiedName("End"); 00494 node.Class = NodeClass::Object; 00495 node.TypeDefinition = ToNodeId("i=2340"); 00496 ObjectAttributes attrs; 00497 attrs.Description = LocalizedText("Retrieve the value at the end of the interval using Interpolated Bounding Values."); 00498 attrs.DisplayName = LocalizedText("End"); 00499 attrs.EventNotifier = 0; 00500 node.Attributes = attrs; 00501 registry.AddNodes(std::vector<AddNodesItem>{node}); 00502 } 00503 00504 { 00505 AddNodesItem node; 00506 node.RequestedNewNodeId = ToNodeId("i=2359"); 00507 node.BrowseName = ToQualifiedName("Delta"); 00508 node.Class = NodeClass::Object; 00509 node.TypeDefinition = ToNodeId("i=2340"); 00510 ObjectAttributes attrs; 00511 attrs.Description = LocalizedText("Retrieve the difference between the Start and End value in the interval."); 00512 attrs.DisplayName = LocalizedText("Delta"); 00513 attrs.EventNotifier = 0; 00514 node.Attributes = attrs; 00515 registry.AddNodes(std::vector<AddNodesItem>{node}); 00516 } 00517 00518 { 00519 AddNodesItem node; 00520 node.RequestedNewNodeId = ToNodeId("i=11505"); 00521 node.BrowseName = ToQualifiedName("StartBound"); 00522 node.Class = NodeClass::Object; 00523 node.TypeDefinition = ToNodeId("i=2340"); 00524 ObjectAttributes attrs; 00525 attrs.Description = LocalizedText("Retrieve the value at the beginning of the interval using Simple Bounding Values."); 00526 attrs.DisplayName = LocalizedText("StartBound"); 00527 attrs.EventNotifier = 0; 00528 node.Attributes = attrs; 00529 registry.AddNodes(std::vector<AddNodesItem>{node}); 00530 } 00531 00532 { 00533 AddNodesItem node; 00534 node.RequestedNewNodeId = ToNodeId("i=11506"); 00535 node.BrowseName = ToQualifiedName("EndBound"); 00536 node.Class = NodeClass::Object; 00537 node.TypeDefinition = ToNodeId("i=2340"); 00538 ObjectAttributes attrs; 00539 attrs.Description = LocalizedText("Retrieve the value at the end of the interval using Simple Bounding Values."); 00540 attrs.DisplayName = LocalizedText("EndBound"); 00541 attrs.EventNotifier = 0; 00542 node.Attributes = attrs; 00543 registry.AddNodes(std::vector<AddNodesItem>{node}); 00544 } 00545 00546 { 00547 AddNodesItem node; 00548 node.RequestedNewNodeId = ToNodeId("i=11507"); 00549 node.BrowseName = ToQualifiedName("DeltaBounds"); 00550 node.Class = NodeClass::Object; 00551 node.TypeDefinition = ToNodeId("i=2340"); 00552 ObjectAttributes attrs; 00553 attrs.Description = LocalizedText("Retrieve the difference between the StartBound and EndBound value in the interval."); 00554 attrs.DisplayName = LocalizedText("DeltaBounds"); 00555 attrs.EventNotifier = 0; 00556 node.Attributes = attrs; 00557 registry.AddNodes(std::vector<AddNodesItem>{node}); 00558 } 00559 00560 { 00561 AddNodesItem node; 00562 node.RequestedNewNodeId = ToNodeId("i=2360"); 00563 node.BrowseName = ToQualifiedName("DurationGood"); 00564 node.Class = NodeClass::Object; 00565 node.TypeDefinition = ToNodeId("i=2340"); 00566 ObjectAttributes attrs; 00567 attrs.Description = LocalizedText("Retrieve the total duration of time in the interval during which the data is good."); 00568 attrs.DisplayName = LocalizedText("DurationGood"); 00569 attrs.EventNotifier = 0; 00570 node.Attributes = attrs; 00571 registry.AddNodes(std::vector<AddNodesItem>{node}); 00572 } 00573 00574 { 00575 AddNodesItem node; 00576 node.RequestedNewNodeId = ToNodeId("i=2361"); 00577 node.BrowseName = ToQualifiedName("DurationBad"); 00578 node.Class = NodeClass::Object; 00579 node.TypeDefinition = ToNodeId("i=2340"); 00580 ObjectAttributes attrs; 00581 attrs.Description = LocalizedText("Retrieve the total duration of time in the interval during which the data is bad."); 00582 attrs.DisplayName = LocalizedText("DurationBad"); 00583 attrs.EventNotifier = 0; 00584 node.Attributes = attrs; 00585 registry.AddNodes(std::vector<AddNodesItem>{node}); 00586 } 00587 00588 { 00589 AddNodesItem node; 00590 node.RequestedNewNodeId = ToNodeId("i=2362"); 00591 node.BrowseName = ToQualifiedName("PercentGood"); 00592 node.Class = NodeClass::Object; 00593 node.TypeDefinition = ToNodeId("i=2340"); 00594 ObjectAttributes attrs; 00595 attrs.Description = LocalizedText("Retrieve the percent of data (0 to 100) in the interval which has a good StatusCode."); 00596 attrs.DisplayName = LocalizedText("PercentGood"); 00597 attrs.EventNotifier = 0; 00598 node.Attributes = attrs; 00599 registry.AddNodes(std::vector<AddNodesItem>{node}); 00600 } 00601 00602 { 00603 AddNodesItem node; 00604 node.RequestedNewNodeId = ToNodeId("i=2363"); 00605 node.BrowseName = ToQualifiedName("PercentBad"); 00606 node.Class = NodeClass::Object; 00607 node.TypeDefinition = ToNodeId("i=2340"); 00608 ObjectAttributes attrs; 00609 attrs.Description = LocalizedText("Retrieve the percent of data (0 to 100) in the interval which has a bad StatusCode."); 00610 attrs.DisplayName = LocalizedText("PercentBad"); 00611 attrs.EventNotifier = 0; 00612 node.Attributes = attrs; 00613 registry.AddNodes(std::vector<AddNodesItem>{node}); 00614 } 00615 00616 { 00617 AddNodesItem node; 00618 node.RequestedNewNodeId = ToNodeId("i=2364"); 00619 node.BrowseName = ToQualifiedName("WorstQuality"); 00620 node.Class = NodeClass::Object; 00621 node.TypeDefinition = ToNodeId("i=2340"); 00622 ObjectAttributes attrs; 00623 attrs.Description = LocalizedText("Retrieve the worst StatusCode of data in the interval."); 00624 attrs.DisplayName = LocalizedText("WorstQuality"); 00625 attrs.EventNotifier = 0; 00626 node.Attributes = attrs; 00627 registry.AddNodes(std::vector<AddNodesItem>{node}); 00628 } 00629 00630 { 00631 AddNodesItem node; 00632 node.RequestedNewNodeId = ToNodeId("i=11292"); 00633 node.BrowseName = ToQualifiedName("WorstQuality2"); 00634 node.Class = NodeClass::Object; 00635 node.TypeDefinition = ToNodeId("i=2340"); 00636 ObjectAttributes attrs; 00637 attrs.Description = LocalizedText("Retrieve the worst StatusCode of data in the interval including the Simple Bounding Values."); 00638 attrs.DisplayName = LocalizedText("WorstQuality2"); 00639 attrs.EventNotifier = 0; 00640 node.Attributes = attrs; 00641 registry.AddNodes(std::vector<AddNodesItem>{node}); 00642 } 00643 00644 { 00645 AddNodesItem node; 00646 node.RequestedNewNodeId = ToNodeId("i=11426"); 00647 node.BrowseName = ToQualifiedName("StandardDeviationSample"); 00648 node.Class = NodeClass::Object; 00649 node.TypeDefinition = ToNodeId("i=2340"); 00650 ObjectAttributes attrs; 00651 attrs.Description = LocalizedText("Retrieve the standard deviation for the interval for a sample of the population (n-1)."); 00652 attrs.DisplayName = LocalizedText("StandardDeviationSample"); 00653 attrs.EventNotifier = 0; 00654 node.Attributes = attrs; 00655 registry.AddNodes(std::vector<AddNodesItem>{node}); 00656 } 00657 00658 { 00659 AddNodesItem node; 00660 node.RequestedNewNodeId = ToNodeId("i=11427"); 00661 node.BrowseName = ToQualifiedName("StandardDeviationPopulation"); 00662 node.Class = NodeClass::Object; 00663 node.TypeDefinition = ToNodeId("i=2340"); 00664 ObjectAttributes attrs; 00665 attrs.Description = LocalizedText("Retrieve the standard deviation for the interval for a complete population (n) which includes Simple Bounding Values."); 00666 attrs.DisplayName = LocalizedText("StandardDeviationPopulation"); 00667 attrs.EventNotifier = 0; 00668 node.Attributes = attrs; 00669 registry.AddNodes(std::vector<AddNodesItem>{node}); 00670 } 00671 00672 { 00673 AddNodesItem node; 00674 node.RequestedNewNodeId = ToNodeId("i=11428"); 00675 node.BrowseName = ToQualifiedName("VarianceSample"); 00676 node.Class = NodeClass::Object; 00677 node.TypeDefinition = ToNodeId("i=2340"); 00678 ObjectAttributes attrs; 00679 attrs.Description = LocalizedText("Retrieve the variance for the interval as calculated by the StandardDeviationSample."); 00680 attrs.DisplayName = LocalizedText("VarianceSample"); 00681 attrs.EventNotifier = 0; 00682 node.Attributes = attrs; 00683 registry.AddNodes(std::vector<AddNodesItem>{node}); 00684 } 00685 00686 { 00687 AddNodesItem node; 00688 node.RequestedNewNodeId = ToNodeId("i=11429"); 00689 node.BrowseName = ToQualifiedName("VariancePopulation"); 00690 node.Class = NodeClass::Object; 00691 node.TypeDefinition = ToNodeId("i=2340"); 00692 ObjectAttributes attrs; 00693 attrs.Description = LocalizedText("Retrieve the variance for the interval as calculated by the StandardDeviationPopulation which includes Simple Bounding Values."); 00694 attrs.DisplayName = LocalizedText("VariancePopulation"); 00695 attrs.EventNotifier = 0; 00696 node.Attributes = attrs; 00697 registry.AddNodes(std::vector<AddNodesItem>{node}); 00698 } 00699 00700 } 00701 00702 } // namespace 00703