Versionshistorie

OPC UA Framework Advanced


Erfolgreich mit nur wenigen Zeilen Code


2.9.0.0 (vorab freigegeben am 25.11.2019)

NEU

  • Es ist nicht länger notwendig einem Namen noch einem Identifier einer benutzerdefinierten Wurzel-Node, welche in OpcNodeManager.CreateNodes(…) zurückgegeben wird, manuell den Standard-Namespace des benutzerdefinierten NodeManagers zuzuweisen.
  • Beachtung der Reihenfolge der Felder wie diese innerhalb ihrer Vererbungshierarchie deklariert sind, um immer zuerst die Felder des Basisdatentyps zu definieren.
  • Neue GetDataType(…) Methoden in der OpcClient Klasse.
  • Neue GetDataType(…) Methoden in der OpcNodeSet Klasse.
  • IOpcNodeInfo definiert nun die Methoden Child(…) und Children(), um die Kind-Nodes von Instanz-Nodes abzurufen.
  • Neue OpcNamespaceCollection Klasse.
  • OpcNodeSet.Namespaces Eigenschaft um die Namespaces bereitzustellen, auf die im Nodeset verwiesen wird.
  • IOpcMethodCommand zur Definition/Verwendung von benutzerdefinierten Command-Instanzen anstelle der Definition eines expliziten Delegaten.
  • OpcMethodCommands Klasse, welche vordefinierte Commands wie den NotImplemented-Command bereitstellt.
  • Erweiterung der OpcMethodNode zur Unterstützung von IOpcMethodCommand Instanzen.
  • Erweiterung der generischen OpcDataTypeNode<T> Klasse zur Unterstützung von Klassen- und Struktur-Typen, welche wiederum auf vorhandene OPC UA Strukturen abgebildet werden.
  • Neue nicht-generische OpcDataTypeNode Klasse.
  • Statische OpcContext.Empty Eigenschaft zur Definition einer “leeren” Kontext-Instanz.
  • IOpcNamespaceResolver wurde in der OpcContext Klasse implementiert und ermöglicht somit das Auflösen von Namespaces von OpcNodeId-Instanzen.
  • OpcTypeSystem Klasse, welche als Basis für die existierende OpcDataTypeSystem und die neue OpcNodeTypeSystem Klasse dient.
  • OpcDataTypeDictionary.Documentation Eigenschaft.
  • OpcNodeSetManager Klasse, welche das Einfache Importierten/Hosten von OpcNodeSets mittels OpcNodeSetManager.Create(…) unterstützt.
  • Protected virtual Methoden OpcNodeManager.ImportNodes() und OpcNodeManager.ImplementNode(IOpcNode).
  • Vereinheitlichung / Vereinfachung der Auflösung des DataType-Attributes insbesondere bei der Verwendung von nicht-built-in Datentypen bei der Definition von Variablen- und Property-Nodes. Dies betrifft die folgenden Node-Klassen: OpcDataItemNode, OpcDataItemNode<T>, OpcAnalogItemNode, OpcAnalogItemNode<T>, OpcDataVariableNode, OpcDataVariableNode<T>, OpcConditionVariableNode, OpcConditionVariableNode<T>, OpcPropertyNode, OpcPropertyNode<T> and OpcVariableNode.

VERÄNDERT

  • Description Eigenschaft wurde auf Documentation umbenannt; um die Konformität zur Spezifikation sicherzustellen. Betroffen sind: IOpcDataTypeInfo, OpcDataTypeInfo und OpcDataFieldInfo to Documentation.
  • OpcEncoding.All(…) erzeugt nun die OpcEncoding.Id aufgrund des Standard-BrowseNames für die verschiedenen Encoding-Types.
  • OpcNamespace.ToString() liefert ab sofort einen string, welcher ausschließlich den OpcNamespace.Value + OpcNamespace.Index (falls nicht null) enthält.
  • OpcNodeSet.GetDataTypeSystem() liefert nun eine OpcDataTypeSystem Instanz, welche den typischen BrowseName der jeweiligen Art der Codierung (welche vom System repräsentiert wird).
  • IOpcTypeProvider.GetType(OpcEncoding) wurde entfernt, weil Codierungsinformationen nur auf Datentypen zutreffen.
  • OpcTypeCategory.EventType und OpcTypeCategory.ReferenceType wurden entfernt.

BEHOBEN

  • Probleme mit DataTypeDictionary-Nodes, welche keine DataTypeDescription-Nodes definieren, während der Erzeugung des DataTypeSystems beim Aufruf von OpcClient.GetDataTypeSystem().
  • Probleme bei der Dekodierung von strukturierten Daten, welche den neuen Typen Opc.UaFx.Bit verwenden.
  • Probleme bei der Verwendung von OpcNodeId.UriIdentifier(…), wenn der Wert von OpcNodeId.Value kein System.String-Wert ist.
  • OpcNamespace behält nun den Original-String bei, der beim Definieren einer OpcNamespace-Instanz verwendet wurde. Jegliche darauffolgende Änderungsmäßnahmen (durch die System.Uri-Klasse) werden jetzt vermieden, sodass die OpcNamespace.Value Eigenschaft immer den gleichen System.String-Wert liefert wie bei der Definition der Instanz verwendet.
  • Probleme die in manchen Situationen dazu führten, dass eine neu erstellte OpcNode-Instanz zu einen späteren Zeitpunkt nicht mehr umbenannt werden konnte, wenn bei der Erstellung dieser kein Name angegeben wurde.

2.8.2.0 (freigegeben am 06.11.2019)

NEU

  • Einführung von Opc.UaFx.Bit als eine .NET-basierte Repräsentation des Foundation-definierten “Bit” Werttypen für den bisher keine konkrete Implementierung existiert.

VERÄNDERT

  • Explizit kodierte Informationen bekannt als “EncodingMask” eines strukturierten Datentypen werden jetzt über den neu eingeführten Opc.UaFx.Bit Typen anstelle von System.Boolean abgebildet.

BEHOBEN

  • Problem mit gemischt-strukturierten Datentypen welche führende Boolean-Werte gefolgt von weiteren Nicht-Boolean-Werten verwenden ergaben einen fälschlich kodierten Datenstrom.
  • Problem beim Verbindungsaufbau zu einen OPC Classic Server in der OPC Watch, wenn kein benutzerdefiniertes Zertifikat verwendet wird.
  • Problem in OpcServerInfo.FromProcess(…) im Falle, dass die ProductVersion der FileVersionInfo der ProcessModule-Instanz von Process.MainModule einen Version-String bereitstellt, der nicht ausschließlich aus Zahlen und Punkten besteht wie z.B. '1.2.3.4-preview'.

2.8.1.3 (freigegeben am 24.10.2019)

BEHOBEN

  • Problem beim Austausch von strukturierten Datentypen ohne die Verwendung der anstehenden Metadaten-Unterstützung.

2.8.1.2 (freigegeben am 23.10.2019)

VERÄNDERT

  • iconUrl und licenseUrl Informationen in NuGet Paketen aufgrund ihrer Abkündigung.

BEHOBEN

  • Problem beim Verbinden zu OPC Classic Servern (An internal error occurred as a result of a programming or configuration error).
  • Problem der falschen Interpretation von Int32 Werten als Rückgabetyp von Methodenknoten.

2.8.1.1 (freigegeben am 11.10.2019)

NEU

  • Unterstützung für Methodenparameter mit “System.Object” implementiert, die als OPC UA Variantenwerte interpretiert werden.

BEHOBEN

  • Probleme mit nicht berücksichtigten Methodenparametern vom Typ “System.Object”.
  • Problem beim Lesen großer Dateiknoten (die Dateien darstellen, deren Inhalt die MaxByteStringLength überschreitet).

2.8.1.0 (freigegeben am 25.09.2019)

NEU

  • RegisterNodes und UnregisterNodes Methoden auf der OpcClient-Klasse zur Registrierung von Nodes für die ein OPC UA Server für die aktuelle Sitzung einen schnelleren Zugriff realisieren sollen.
  • Unterstützung der OPC Classic API in .NET Standard, damit die API auch in .NET Core Anwendungen unter Windows zur Verfügung steht.
  • Neue Methoden OpcDataObject.HasField(name) und OpcDataObject.TryGetField(name, out field).
  • Verbesserte Performance durch den Ausschluss von Foundation-definierten Data Type Dictionaries beim Abrufen des Datentypen-Systems eines Servers.
  • Neue Eigenschaften OpcClient.UseDynamic und geänderter Standardwert der OpcAutomatism.UseDynamic-Eigenschaft (auf den Wert false) um die Performance beim Verbindungsaufbau zu steigern, wenn keine Information über Datentypen benötigt werden.
  • Unterstützung von Servern, beim Abrufen der Data Type Dictionaries, die kein Bereichs-basiertes Lesen von Daten unterstützen.

BEHOBEN

  • Absturz durch eine nicht behandelte Ausnahme beim Aufruf von Socket.Shutdown().

VERÄNDERT

  • Die Eigenschaft OpcAutomatism.UseDynamic besitzt ab sofort den Standardwert false. Die Änderung dieser oder OpcClient.UseDynamic-Eigenschaft auch den Wert true ist notwendig damit das OpcDataObject genutzt werden kann.

2.8.0.0 (freigegeben am 18.09.2019)

NEU

  • Einführung einer Reihe neuer Klassen zur Unterstützung der Definition, Verwendung und Reflektion benutzerdefinierter Datentypen in Clientanwendungen.
  • Neue OpcNodeSet-Klasse, um eine Datei-, Zeichenfolgen- oder Stream-basierte Quelle bereitzustellen, die Informationen zum Datentypensystem aus einem UANodeSet bereitstellt.
  • Die neue OpcClient.NodeSet-Eigenschaft wurde implementiert, um eine Instanz der OpcNodeSet-Klasse festzulegen, von der Datentypensysteminformationen abgefragt werden sollen, anstatt das Datentypensystem des Servers abzufragen.
  • OpcClient.GetDataTypeSystem()-Methode, zum Ermitteln des Datentypsystems das vom Client zum Auflösen von Datentypinformationen verwendet wird.
  • OpcAutomatism.UseDynamicTypeRegistration-Eigenschaft zur Steuerung der automatischen Typreflexion, mit der Client- und Serveranwendungen die verschiedenen deklarierten Daten- und Ereignistypen bestimmen.
  • Einführung der neuen OpcAutomatism.UseDynamic-Eigenschaft zur Steuerung der dynamischen Typauflösung bei Verwendung von benutzerdefinierten, aber nicht explizit deklarierten Datentypen in Clientanwendungen.
  • Neue OpcNodeValue<T>-Klasse, OpcAttributeValue<T> und IOpcNodeAttribute mit IOpcNodeDescriptor in Verbindung mit OpcNodeValuePair eingeführt, um “knotengebundene” Werte zu deklarieren.
  • Erweiterung der OpcClient-Klasse mit neuen ReadNodeValue- und WriteNodeValue-Methoden zum Lesen und Schreiben von “knotengebundenen” Werten.
  • Verbesserte Ausnahmebehandlung, um StackTrace-Informationen vom Benutzercode bis zur Foundation- und Kommunikationsebene beizubehalten.
  • Implementierung der neuen OpcClient.KeepAlive-Eigenschaft samt entsprechender OpcClientKeepAlive-Klasse, um die Keep-Alive-Aktionen in einer Clientanwendung zu steuern und zu überwachen.
  • Implementierung der dynamischen Typkonvertierung in OpcValue.As<T>()
  • Neue AsValue<T>()-Methode in der OpcValue Klasse, um eine generische Definition des Werts mithilfe der neuen OpcValue<T>-Klasse bereitzustellen.
  • OpcNamespace stellt jetzt die Namespace-Zeichenfolge / Uri mit der neuen OpcNamespace.Value-Eigenschaft bereit.
  • Die Standardtransportlimits wurden bei DefaultMaxByteStringLength von 64 KB auf 5 MB und bei DefaultMaxMessageSize von 1 MB auf 10 MB erhöht.
  • Die inline behandelten Ausnahmen bei Verwendung der XmlSerializer Klasse beim Start wurden behoben.
  • Verbesserte Ausnahmebehandlung und -verfolgung beim Kodieren und Dekodieren von Daten (siehe OpcTypes.EncodingFailed und OpcTypes.DecodingFailed).
  • Unterstützung zum Tracen aller Kodierungsoperationen mit Hilfe der neuen Klassen OpcEncodingStackFrame und OpcEncodingStackTrace.
  • Einführung der Unterstützung des Tracings der Decodierung und Codierung mithilfe der neuen Klassen OpcEncodingStackFrame und OpcEncodingStackTrace.
  • “int ResolveIndex (string namespaceValue)” und “string ResolveValue (int namespaceIndex)” zu IOpcNamespaceResolver hinzugefügt.
  • OpcClient bietet jetzt Methoden, um Aufrufe von CallMethod mithilfe der neuen generischen Methoden CallAction und CallFunc zu vereinfachen.
  • Zusätzliche Überladungen zu OpcBrowseNode hinzugefügt, um OpcNodeIds zu unterstützen, die auf bestimmte Verweistypen verweisen.
  • OpcNodeInfo bietet jetzt zusätzliche Überladungen von Children(…) und Parents(…), die einen OpcReferenceType-Wert akzeptieren.
  • OpcResult liefert jetzt mit GetBaseResult() das Root-Ergebnis.
  • OpcEventNode.EventTypeId kann jetzt mit dem hinzugefügten Setter beschrieben werden.
  • Einführung von OpcEventTypeAttribute zur Client-seitigen Definition benutzerdefinierter Ereignistypen, die zur Verarbeitung von Ereignisbenachrichtigungsdaten in Clientanwendungen verwendet werden.
  • Falsch verwendeter Statuscode beim Dekodieren im Foundation Stack korrigiert (vorher: BadEncodingError, jetzt: BadDecodingError).
  • Fehlende SourceType-Eigenschaft zu Opc.Ua.Schema.Binary.FieldType hinzugefügt.
  • Fehlende BaseType-Eigenschaft zu Opc.Ua.Schema.Binary.BaseType hinzugefügt.

BEHOBEN

  • Falsche verwendete Variable beim Konfigurieren von Opc.UaFx.Client.OpcSubscription.LifetimeCount.
  • Probleme bei der Serialisierung von OpcException-Objekten.

VERÄNDERT

  • OpcDataTypeAttribute ist jetzt auf Klassen und Strukturen anwendbar.
  • OpcNodeManager.NamespaceIndexes und OpcNodeManager.NamespaceUris wurden in der neuen OpcNodeManager.Namespaces-Eigenschaft zusammengefasst.
  • IOpcReadOnlyDataStore wurde in IOpcReadOnlyNodeDataStore umbenannt.
  • IOpcNamespaceResolver “Uri Resolve(int namespaceIndex)” und “int Resolve(Uri namespaceUri)” sind jetzt veraltet.

2.7.5.1 (freigegeben am 15.08.2019)

NEU

  • Verwendung der OpcNominalNodeIdFactory (über OpcNodeId.Factory) zur Auflösung von OPC Classic Tag-Namen unter Verwendung des OPC Classic Server spezifischen Tag-Separators.

BEHOBEN

  • Problem mit mehrfach eingetragenen Serialisierungsdaten von Ausnahmen, welche zu SerializationExceptions an Stelle der eigentlichen Ausnahmen führte.

2.7.5.0 (freigegeben am 13.08.2019)

NEU

  • Verbesserte Dokumentation der API: IOpcNode, IOpcNodeInfo and OpcNode.
  • Änderungen am Stack um sicherzustellen, dass Node-Manager Locks solange nicht freigegeben werden, solange ein Monitored-Item angelegt, modifiziert oder gelöscht wird.
  • System.ServiceModel.Primitives wurde von Version 4.5.x auf Version 4.5.3 aktualisiert, weil in Version 4.5.x ein Fehler das korrekte Kopieren der “System.Private.ServiceModel.dll” in .NET Core Anwendungen beim Publish für Windows (win-xxx) verhinderte.

BEHOBEN

  • Probleme beim Kompilieren mittels .NET Native tool chain.
  • Probleme mit mehrfach auftretenden Benachrichtigungen nach einer erneuten Verbindung zum Server.
  • Probleme mit inline geparsten OpcNodeId's beim Erstellen einer OpcNodeId mit einem String-Identifier.
  • Problem mit falsch verwendeter Basis-Adresse und Security-Poilicies im OpcDiscoveryServer.
  • Probleme mit unnötigerweise wiedererstellten OpcMonitoredItem Instanz welches dazu führte, dass das Vergleichen dieser nicht länger funktionierte.

VERÄNDERT

  • OpcMonitoredItem.AutoFlushCache wurde durch die neue Eigenschaft OpcMonitoredItem.QueueMode ersetzt, um den verwendeten Mechanismus beim Überlauf der Benachrichtigungsqueue klarer auszudrücken.

2.7.4.0 (freigegeben am 07.06.2019)

NEU

  • Die Domänen-Namensauflösung, welche während der Validierung von Client- / Server-Zertifikaten verwendet wird, verwendet jetzt alternative Mechanismen zur Auflösung, falls kein DNS Server im Betriebssystem konfiguriert wurde.
  • Die im Falle von HTTPS (im Stack der Foundation) nicht länger verwendete OperationTimeout findet wieder Anwendung.
  • Neue Ereignisse in der OpcNodeManager Klasse: MonitoredItemsCreated, MonitoredItemsModified und MonitoredItemsDeleted.

BEHOBEN

  • SocketExceptions unter macOS während der Validierung von Domänen-Namen in Zertifikaten, wenn kein (erreichbarer) DNS Server im Betriebssystem eingerichtet wurde.

VERÄNDERT

  • Vereinzelte Eigenschaften in den Klassen OpcMonitoredItem, OpcServiceCounter, OpcSessionDiagnostics und OpcServerDiagnostics liefern anstelle von int- jetzt long-basierte Werte um weiterhin die CLS Compliance zu wahren, obwohl der Stack der Foundation unsigned Datentypen verwendet.

2.7.3.1 (freigegeben am 23.05.2019)

NEU

  • [Client SDK] Unterstützung des .NET Frameworks 4.6.

BEHOBEN

  • Problem beim Verbinden zu Server, welche als Protokoll HTTPS auf macOS und Linux verwenden. Das Problem äußerte sich in der OpcException: An unrecognized response was received from the server.

2.7.3.0 (freigegeben am 17.05.2019)

NEU

  • Die lokale X509Certificate2 Instanziierung wurde durch das OpcCertificateManager.QueryInstance event zum Laden von Zertifikat-Informationen ersetzt. Dies ermöglicht die benutzerdefinierte X509Certificate2 Instanzenerzeugung unter Verwendung eines entsprechenden EventHandlers.
  • Die neue OpcCertificateStores.PathProbings Eigenschaft ermöglich die benutzerdefinierte Anpassung der Probing Mechanismen die zur Ermittlung der standardmäßig verwendeten Speicherorte der Zertifikatspeicher verwendet werden.
  • Verbesserung der Benutzererfahrung bezüglich verschiedener (kleiner) Probleme in Subscriptions und MonitoredItems (insbesondere beim automatischen Neuverbinden des Clients).
  • Weitere AddMonitoredItem(…) Überladungen wurden der OpcSubscription Klasse hinzugefügt.

BEHOBEN

  • Problem beim Verbinden zu Server, welche als Protokoll HTTPS verwenden. Das Problem äußerte sich in der OpcException: An unrecognized response was received from the server.

VERÄNDERT

  • Die Implementierung der OpcMonitoredItem und OpcSubscription Klasse wurde aktualisiert: Hierbei wurden zum Teil “int”-basierte Eigenschafen auf “long” umgestellt, um die zugrundeliegenden “uint” Eigenschaften des Foundation Stacks entsprechend CLSCompliant anzubieten.

2.7.2.0 (freigegeben am 10.05.2019)

NEU

  • Unterstützung von TypeDefinition Informationen beim Browsen von Instanz-Nodes durch die neue OpcInstanceNodeInfo Klasse.
  • Neue Socket Eigenschaft auf der OpcSession Klasse zur Identifizierung der Socket Identitätsinformationen die für den Lokalen und den Remote Endpunkt verwendet werden.
  • Produktsymbol der NuGet Pakete wurde geändert.
  • [Client SDK] Aktive Unterstützung von IL2CPP in Unity Projekten. Hierdurch werden vereinzelte Überlaufausnahmen durch IL2CPP gelöst.

BEHOBEN

  • Probleme beim gleichzeitigen Browsen von mehr als einen Referenzentypen, welche zu einer ArgumentOutOfRangeException führten.
  • Probleme die manchmal zu veralteten Subscription und Monitored Item Informationen führen konnten, wenn durch den Client eine verlorene Verbindung zum Server automatisch wiederhergestellt wurde.
  • Problem mit manchmal fehlenden Client- und Subscription-basierten Notification Ereignissen - wie z.B. NotificationReceived blieb auf dem OpcClient aus.

2.7.1.0 (freigegeben am 25.03.2019)

NEU

  • Verweigerung von angeforderten Node Identifiers die einen unbekannten Namespace Index Wert verwenden (im AddNodes Service, BadNodeIdInvalid).
  • Verwendung des Node (Identifier) spezifischen Node Managers beim Anlegen von Nodes durch den Client, um sicherzustellen, dass ein Node nicht zu den Nodes des Node Managers des Elternknotens hinzugefügt wird, wenn dieser auf einen Namespace eines anderen Node Managers verweist.
  • Node Zugriff- und Schreibe-Flanken werden ab sofort rekursiv vergeben, wenn ein Node über durch einen Client angelegt wird.

BEHOBEN

  • Problem der Verweigerung von durch den Client vorgegebenen Node Identifier (AddNodes Service).
  • Probleme mit benutzerdefinierten Node-Attributen zum Festlegen von Zugriff- und Schreib-Flanken beim Anlegen von Nodes durch den Client.
  • Korrektur der wenig schön generierten Namespace Uri des Standard-Namespaces (unnötige '/' wurden entfernt).
  • Problem mit falsch verpackten .NET Array Types bei der Verwendung von OpcValue Instanzen.
  • Problem mit falsch verpackten UA FX Array Typen bei der Verwendung von OpcValue Instanzen.
  • Problem mit fehlenden DataType Informationen im Falle von OpcVariableNode (nicht generischen) Instanzen, wenn diese mit einem Initialwert über den Konstruktor initialisiert werden und anschließend ihre DataType Eigenschaft auf den entsprechenden Typen festgelegt wurde. Resultat: Die DataType Eigenschaft übernahm den neuen Wert nicht.

2.7.0.2 (freigegeben am 15.03.2019)

  • BEHOBEN: Fehlerhafte Adressierung von nicht verwalteten Speicher (bei Verwendung von OPC Classic), welche insbesondere in Anwendungen fehlschlagen kann, wenn diese die Option LARGEADDRESSAWARE verwenden.

2.7.0.1 (freigegeben am 15.03.2019)

  • BEHOBEN: Problem mit Gebietsschemata, welche vom OPC Classic Server zwar unterstützt werden, aber nicht vom Betriebssystem des OPC Clients.
  • BEHOBEN: Problem bei der Kommunikation mit einem OPC Classic Server der auf einem 64 Bit System ausgeführt wird.

2.7.0.0 (freigegeben am 14.03.2019)

  • NEU: Vollständige Überarbeitung der AddNode Unterstützung im OpcClient einschließlich einem vollständig neuen Satz von OpcAddNode command Typen wie: OpcAddFolderNode, OpcAddObjectNode, OpcAddDataVariableNode, OpcAddAnalogItemNode und einige mehr.
  • NEU: Erstmalige vollständige Unterstützung von AddNode Service-Calls im OpcServer, welcher alle unterstützten Typ-Definitionen zum Erstellen von Nodes im Adressraum des Servers ermöglicht.
  • NEU: Vollständige Überarbeitung der DeleteNode, AddReference und DeleteReference Unterstützung im OpcClient einschließlich der Neuauflage der OpcDeleteNode, OpcAddReference und OpcDeleteReference Commands.
  • NEU: Überarbeitung der Unterstützung von DeleteNode, AddReference und DeleteReference Service-Calls im OpcServer unter Anwendung zusätzlicher Anfragen-Validierungen.
  • NEU: Einführung der neuen OpcAddNodeResult Klasse, welche eine Spezialisierung der OpcResult Klasse darstellt und somit das Ergebnis, dessen Commands wie auch die NodeId nach der Ausführung eines AddNode Service-Calls bereitstellt.
  • NEU: Der OpcNodeManager stellt ab sofort virtuelle Methoden bereit, welche beim Hinzufügen (via AddNode Service) und Entfernen (via DeleteNode Service) von Nodes zum / vom Adressraum des Managers ausgeführt werden.
  • NEU: Verbesserte Exception Details bei der Verwendung der Services: AddNodes, DeleteNodes, AddReferences und DeleteReferences.
  • NEU: Der Konstruktor der OpcServerIdentity Klasse stellt ab sofort eine Überladung für ein string basiertes Passwort bereit.
  • NEU: OpcServer Ereignisse: RequestProcessing, RequestValidating, RequestValidated und RequestProcessed zur Vor- und Nachverarbeitung von Client Anfragen und den darauf gesendeten Antworten.
  • NEU: Die OpcException stellt ab sofort Informationen über die Source, den StackTrace, Data und den HelpLink bereit (falls verfügbar) und wird im Falle einer ursprünglich anderen Exception diese nicht länger verwerfen.
  • NEU: IOpcNode.Child(…) Methode zum Ermitteln einer IOpcNode Kind-Instanz unter Verwendung des Namens (= Browse Name) des Kindknotens.
  • NEU: Zusätzliche OpcServerIdentity.ChangePassword(string) Methodenüberladung.
  • NEU: Zusätzliche OpcUserNameAcl.AddEntry(…) Methodenüberladung zur Definition einer benutzerdefinierten OpcServerIdentity.
  • NEU: Subclassing der OpcResult Klasse für benutzerdefinierte Typen.
  • VERÄNDERT: Die OpcServerIdentity.Password Eigenschaft wurde entfernt, weil es keinen Grund gibt das intern gespeicherte Passwort nach außen weiterzugeben. Zudem ist es keine gute Praxis einen Verweis auf ein Array über eine Eigenschaft bereitzustellen.
  • VERÄNDERT: OpcTransformUserPasswordDelegate Delegat wurde entfernt.
  • VERÄNDERT: OpcUserNameAcl.PasswordTransform wird durch die virtuellen Methoden Matches und TransformPassword in der OpcServerIdentity ersetzt.
  • BEHOBEN: Problem beim Schreiben von eingebauten strukturierten Werten wie OpcEngineeringUnitInfo oder OpcValueRange unter Verwendung von OpcClient.WriteNode.
  • BEHOBEN: Problem beim Trennen einer Verbindung / Anhalten eines Clients / Servers, welches im Falle eines noch ausstehenden Verbindungsversuchs zum Absturz führen kann.
  • BEHOBEN: Problem mit StackOverflowException's bei der Änderung der Instanz der OpcServer.Configuration Eigenschaft.

2.6.0.0 (freigegeben am 20.02.2019)

  • NEU: OPC Classic Support via OpcClient Klasse durch Angabe der Adresse im Schema "opc.com://<host>(:<port>)/<progId>/<classId>". (nur mit .NET Framework)
  • NEU: OpcClassicInterface, OpcClassicInterfaces, OpcClassicInterfaceCollection und OpcClassicInterfaceCategory. (nur mit .NET Framework)
  • NEU: OpcClassicApplicationDescription, OpcClassicApplicationDescriptionCollection, OpcClassicEndpointDescription und OpcClassicEndpointDescriptionCollection. (nur mit .NET Framework)
  • NEU: OPC Classic Discovery unter Verwendung der neuen OpcClassicDiscoveryClient Klasse, hierzu wird “OpcEnum.exe” verwendet (eine COM Anwendung, die Teil der OPC Classic Laufzeitumgebung ist). (nur mit .NET Framework)
  • NEU: Erweiterung der OpcDataChangeFilter Klasse zur Unterstützung eines Triggers, des DeadbandTypes und eines DeadbandValues. Unter Verwendung der Trigger Eigenschaft ist es möglich Änderungen des SourceTimestamp ebenfalls zu überwachen.
  • NEU: Zusätzliche Überladungen der OpcClient.SubscribeDataChange Methode und zusätzliche Überladungen der OpcDataSubscribeDataChange Konstruktoren, welche einen Wert der OpcDataChangeTrigger Enumeration akzeptieren.
  • NEU: Ein vordefinierter ApplicationName wird ab sofort als SubjectName eines Zertifikats verwendet, wenn ein neues Zertifikat (automatisch) für eine Client / Server Anwendung erstellt wird.
  • NEU: OpcApplicationInstance stellt eine Standardimplementierung der IOpcApplicationInstance Schnittstelle bereit.
  • NEU: OpcClient und OpcServerBase verwenden ab sofort die neue Klasse OpcApplicationInstance als gemeinsame Basisklasse.
  • NEU: OpcSecurity als generische Basisklasse für Sicherheitseinstellungen von Client und Server Anwendungen.
  • NEU: OpcClient leitet von OpcApplicationInstance ab.
  • NEU: OpcServerBase leitet von OpcApplicationInstance ab.
  • NEU: Zentralisierte Anwendungskonfiguration (innerhalb des Frameworks) von Client / Server Anwendungsinstanzen durch Einsatz der OpcApplicationInstance.
  • NEU: OpcTransport als generische Klasse zur Konfiguration der Transport-Einstellungen, welche jetzt Teil der IOpcApplicationInstance Schnittstelle ist.
  • NEU: OpcSecurity als generische Klasse zur Konfiguration der Security-Einstellungen, welche jetzt Teil der IOpcApplicationInstance-Schnittstelle ist.
  • NEU: Die Eigenschaften Security und Transport wurden der IOpcApplicationInstance Schnittstelle hinzugefügt.
  • NEU: Das Ereignis CertificateValidationFailed wurde der IOpcApplicationInstance Schnittstelle hinzugefügt.
  • NEU: OpcSecurityPolicyCollection implementiert ab sofort einen öffentlichen Konstruktor.
  • VERÄNDERT: Die Klasse OpcClientTransport wurde entfernt (ersetzt durch die neue OpcTransport Klasse).
  • VERÄNDERT: Die Klasse OpcServerTransport wurde entfernt (ersetzt durch die neue OpcTransport Klasse).
  • VERÄNDERT: Die standardmäßig verwendeten Server-Informationen die von der OpcServerBase bereitgestellt werden bevorzugen einen vordefinierten ApplicationName.
  • VERÄNDERT: OpcSecurityPolicyCollection stellt nicht länger einen Konstruktor bereit, der eine OpcServerBase-Instanz erwartet. Die zugehörige Owner Eigenschaft wurde ebenso entfernt.

2.5.7.0 (freigegeben am 06.02.2019)

  • NEU: OpcClient.WriteNode akzeptiert jetzt das direkte Schreiben von null als Node-Wert, ohne diesen zuvor in einer OpcValue Instanz zu “verpacken”.
  • NEU: Die OpcServer Klasse stellt neue Konstruktoren-Überladungen bereit, welche die Standard-Adresse bestehend aus “opc.tcp” + “localhost” + “4840” (der Standardport) verwenden.
  • NEU: Der gesamte Node-Tree can jetzt “inline” mittels neuer Konstruktoren auf OpcObjectNode und OpcFolderNode erzeugt werden. Hierzu können die direkten Kindknoten der Knoten direkt beim Erstellen ihrer Elternknoten übergeben werden.
  • NEU: Ab sofort ist sichergestellt, dass Read/Write Operationen auf Attributen abgebrochen werden, wenn benutzerdefinierte Read/Write Callbacks ein “Bad”-Ergebnis liefern. Im Falle von “Good”-Ergebnissen wird die Read/Write Operationen wie gehabt fortgesetzt.
  • NEU: API deren Signatur ausschließlich “nodeId:string” zur Identifizierung einer Node verwendet interpretiert “inline” den übergebenen String-Wert um eine fließendere Verwendung der Framework API zu gewährleisten.
  • VERÄNDERT: Anwendungszeritifkate werden nicht länger unter .\CertificateStores\Trusted, sondern (standardmässig) unter .\CertificateStores\App gespeichert, um die Performance beim Start der Anwendung auf der Suche nach dem Anwendungszertifikat zu steigern.
  • VERÄNDERT: Es wird nicht länger die LinkTime, sondern die LastWriteTime der Assembly bei der Ermittlung der OpcServerInfo einer Assembly verwendet.
  • BEHOBEN: Problem mit nicht übernommenen Initialwert bei Verwendung des OpcDataVariableNode(parent, name, value)-Konstruktors.
  • BEHOBEN: Prüfungen des Wertes (die z.B. zu BadTypeMismatch führen) werden jetzt beim Schreiben des Value-Attributs durchgeführt.

2.5.6.0 (freigegeben am 19.10.2018 [Client SDK], 06.02.2019 [Client+Server SDK])

  • NEU: Erweiterte Linker Unterstützung für Android Projekte beim Linken mittels SDK+User Option.
  • NEU: Erweiterte Standard-Verzeichnis-Auswahl für Zertifikate. Zu erst wird das lokale Verzeichnis auf Schreibrechte geprüft, dann CommonApplicationData und schließlich ApplicationData.
  • NEU: Zusätzliche Unterstützung des .NET Frameworks 4.7.1 als Zielframework um nicht länger von 12 weiteren System-Assemblies abhängig zu sein. Diese Abhängigkeiten kommen durch einen Fehler im .NET Framework 4.7.1 bei der Referenzierung von .NET Standard Assemblies zustande. Siehe hierzu: https://github.com/Microsoft/dotnet/blob/master/releases/net471/KnownIssues/514195-Targeting%20.NET%20Framework%204.7.1%20copies%20extra%20files%20to%20your%20bin%20directory.md
  • BEHOBEN: Fehler beim Prüfen, ob ein Zertifikat bereits im Zertifikat-Speicher enthalten ist. Der Speicher lieferte immer den Wert Wahr.
  • BEHOBEN: Fehler beim Browsen unter Verwendung der Linker Option SDK+User in Android Projekten.

2.5.5.0 (freigegeben am 11.10.2018 [Client SDK], 06.02.2019 [Client+Server SDK])

  • NEU: API für die exklusive Client Entwicklung aus dem OPC UA Advanced extrahiert.
  • NEU: CertificateRequested Ereignis auf der OpcClient Klasse zum Abrufen eines alternativen Zertifikats in Fällen, in denen ein existierendes Anwendungsinstanz-Zertifikat nicht gefunden oder nicht länger verwendet werden kann. Über dieses Ereignis kann zusätzlich der Grund, warum ein neues Zertifikat benötigt wird, abgerufen werden. Zusätzlich ermöglicht das Ereignis die Information des Benutzers des Clients.
  • NEU: Im Fall, dass nicht auf das Verzeichnis “.\CertificateStores\” (das Standard-Verzeichnis für Zertifikate) schreibend zugegriffen werden kann, wird der Pfad “$(AppData)\OPC Foundation\CertificateStores\” anstelle des Standard-Verzeichnisses verwendet um die Zertifikate zu verwalten.
  • NEU: Erhöhte Standard-Laufzeit für Zertifikate: von 12 Monaten (= 1 Jahr) auf 600 Monate (= 50 Jahre).
  • NEU: Reduzierte geforderte Standard-Schlüssellänge von 2048 auf 1024 um weiterhin ältere Zertifikate zu unterstützen.
  • NEU: Reduzierte Assembly-Größe und reduzierte Abhängigkeiten durch Reorganisation der intern verwendeten Lizenzierungs-Mechanismen für .NET Standard.
  • NEU: Im Falle einer fehlgeschlagene Bindung des Sockets wird nicht länger die Exception behandelt noch eine allgemeine erzeugt - stattdessen wird diese an den Aufrufer weitergereicht.
  • NEU: Binding Eigenschaft auf der OpcServer Klass welche eine Instanz der neuen OpcServerBinding Klasse bereitstellt.
  • NEU: OpcServerBinding (OpcServerBase.Binding Eigenschaft) welche die Möglichkeit bietet einen Geltungsbereich beim Binden der Adresse anzugeben. Standardmässig wird (wie zuvor) auf jede beliebige IPv4 und auf jede beliebige IPv6 Adresse mit der angegebenen Portnummer gebunden.
  • NEU: Die Low-Level Read / Write Operationen des Nodemanagers stellen ab sofort OpcNodeAccessTokens mit Operation Result-Informationen bereit.
  • NEU: Dokumentation für OpcSubscription, OpcMonitoredItem, OpcMonitoredItemEventArgs, OpcMonitoredItemEventHandler und weiterer API bezüglich dem Thema Subscriptions.
  • VERÄNDERT: Standardwert von MinimumCertificateKeySize von 2048 auf 1024 um kleiner Schlüssellängen älterer Zertifikate zu unterstützen.
  • VERÄNDERT: Wenn das Anwendungszertifikat einer Client-Instanz mittels Certificate-Eigenschaft geändert wird, dann wird der Store-Path-Type des Zertifikat-Speichers für Anwendungszertifikate auf “System” geändert. Um weiterhin den Store-Path-Type “Directory” zu verwenden, muss dieser manuell geändert werden. Zusätzlich muss dann sichergestellt sein, dass das Zertifikat auch im Zertifikat-Speicher für Anwendungszertifikate enthalten ist - nach Änderung des Store-Path-Types auf “Directory”.
  • BEHOBEN: OpcServer.Security.AutoAcceptUntrustedCertificates wurde bei der Verwendung von Secured Endpoint Policies nicht zur automatischen Annahme eines nicht vertrauenswürdigen Zertifikats berücksichtigt.
  • BEHOBEN: Problem beim automatischen Ermitteln der Startzeit der Node-Historie, wenn diese Anzahl-basiert gelesen wird.
  • BEHOBEN: Problem beim Vergleich von bisher nicht-vergleichbaren Monitored Item und Session Instanzen.
  • BEHOBEN: Problem beim Schreiben von Rohdaten welche in einem OpcValue “verpackt” transport wurden.
  • BEHOBEN: Problem bei der Interpretation von AutoAcceptUntrustedCertificates Server Anwendungsinstanzen.
  • BEHOBEN: Fehler der zum Verwerfen des Store-Paths des Zertifikat-Speichers für Anwendungszertifikate geführt hat, wenn manuell ein Anwendungszertifikat festgelegt wurde.
  • BEHOBEN: Verwendung des falschen Startwertes beim Lesen von historischen Werten ohne explizite Angabe einer Startzeit.

2.5.4.0 (freigegeben am 27.08.2018)

  • NEU: Unterstützung der automatischen History-Erzeugung im NodeHistorian durch von Clients geschriebenen Werten (AutoUpdateHistory Eigenschaft).
  • NEU: OpcNodeHistorian unterscheidet Node-Änderungen und nimmt nur noch Änderungen des Value Attributs in die Historie auf.
  • NEU: Verbesserte Code Dokumentation der Server-seitigen Subscription / MonitoredItem API.
  • NEU: Server.OpcSubscription und Server.OpcMonitoredItem Instanzen sind ab sofort vergleichbar.
  • BEHOBEN: OpcVariableNode.IsHistorizing wird nicht länger nach dem Aufruf von OpcNodeManager.CreateNodes zurückgesetzt.
  • BEHOBEN: Problem beim Schreiben von Variablen-Knoden mit undefinierten DataType Attribut (funktionierte nicht und führte zum Fehler).
  • VERÄNDERT: OpcNode.BeforeApplyChanges und OpcNode.AfterApplyChanges werden nur noch ausgelöst, wenn Änderungen bestehen (siehe OpcNode.HasPendingChanges).

2.5.3.0 (freigegeben am 21.08.2018)

  • NEU: Automatische Wert-Ausrichtung nach dem Lesen eines Node-Wertes (Server-seitig) unter Verwendung des vom Client geforderten Encodings / Werte-Bereiches.
  • NEU: Neue OpcClientTransport Klasse, Zugriff über OpcClient.Transport. Zur Konfiguration von Einstellungen für Timeouts und Grenzen.
  • NEU: Neue OpcServerTransport Klasse, Zugriff über OpcServer.Transport. Zur Konfiguration von Einstellungen für Timeouts und Grenzen.
  • BEHOBEN: Problem bei der Validierung von X509 Identity Tokens aufgrund der Verwendung falscher Zertifikatsdaten.

2.5.2.5 (freigegeben am 07.08.2018)

  • NEU: NuGet Abhängigkeiten wurden entfernt, die dem Projekt des Benutzers unnötig aufgezwungen wurden. (in .NET Standard)
  • NEU: Der Inhalt der *.deps.json wurde vereinfacht. (in .NET Standard)

2.5.2.4 (released 2018-07-31)

  • BEHOBEN: Problem beim Senden von globalen Events mittels OpcServer und OpcNodeManager Instanzen.
  • NEU: Unterstützung von Null-OpcName Instanzen in der OpcNominalNodeIdFactory.
  • NEU: OpcContext stellt ab sofort immer eine gültige OpcNodeIdFactory Instanz bereit (mindestens die Instanz die mittels OpcNodeId.Factory Eigenschaft festgelegt wurde).

2.5.2.3 (freigegeben am 23.07.2018)

  • NEU: NuGet aktualisiert.

2.5.2.2 (freigegeben am 23.07.2018)

  • BEHOBEN: InvalidCastException wenn die Assembly per Assembly.LoadFrom() geladen wurde.

2.5.2.1 (freigegeben am 13.07.2018)

  • BEHOBEN: DllNotFoundException wenn versucht wurde auf bestimmte Typen zuzugreifen, bevor ein OpcClient oder OpcServer erstellt wurde.

2.5.2.0 (freigegeben am 06.07.2018)

  • NEU: .NET Standard / .NET Core Lizenzierung und Support wurde freigegeben.

2.5.1.1 (freigegeben am 03.07.2018)

  • NEU: Demo-Lizenz wurde erneuert, um eine neue Lizenzperiode bereitzustellen.

2.5.1.0 (freigegeben am 15.06.2018)

  • NEU: MimeType-Unterstützung im OpcFileNode und in OpcFileInfo
  • NEU: Verbesserte Performance beim Zugriff auf OpcContext-Verweise in OpcNodes (intern).
  • NEU: Verbesserte Performance und verbesserter Speicherbedarf beim Zugriff auf Kindknoten einer OpcNode (intern).
  • NEU: Standardmäßig vorbereitete Konfigurations-Knoten für historische Daten werden jetzt on-demand erzeugt.
  • NEU: Interne Querverweise wurden aufgelöst und schwerfällige Callbacks aufgelöst und durch ein Provider-Pattern ersetzt.
  • NEU: Die Schnittstelle IOpcNodeInfo wurde eingeführt um das Erzeugen von temporären OpcNode-Instanzen hinfällig zu machen und um die Leistung wie auch den Speicherbedarf zu verbessern.
  • NEU: Verwendung der Schnittstelle IOpcNodeInfo anstelle der eigentlichen Node immer dann, wenn der Verweis auf einen Node nicht für die weiteren Operationen / Auswertungen notwendig ist.
  • NEU: Einführung eines Caches für benutzerdefinierte Datentypen, damit ein wiederholtes Reflektieren dessen nicht länger nötig ist. Dies steigert die Leistung.
  • NEU: Ausnahmen bei der Ausführung von CreateNodes(…) werden nicht länger “gefangen”, sondern an den Aufruf von OpcServer.Start weitergereicht.
  • VERÄNDERT: IsNodeAccessible(…, IOpcNode node) wurde zu IsNodeAccessible(…, IOpcNodeInfo node)

2.5.0.3 (freigegeben am 24.05.2018)

  • BEHOBEN: Problem mit fehlenden externen Verweisen wenn mehrere Node Manager den gleichen benutzerdefinierten Node als Wurzel für ihre Nodes verwenden.

2.5.0.2 (freigegeben am 23.05.2018)

  • BEHOBEN: Problem mit fehlenden Knoten wenn mehrere Node Manager auf den gleichen Systemknoten verweisen.

2.5.0.1 (freigegeben am 16.05.2018)

  • BEHOBEN: NullReferenceException in OpcMethodNode wenn ein vordefinierter Knoten als Eltern-Knoten des Methoden-Knotens verwendet wurde.
  • BEHOBEN: Nicht länger im Adressraum des Servers angezeigte OpcDataVariableNode Knoten, wenn der Konstruktor(parent : IOpcNode, name : OpcName) verwendet wurde.
  • VERÄNDERT: Beispiel-Projekte wurden auf die C# Sprachversion 6.0 zurückgestuft um sicherzustellen, dass die Bespiele auch in älteren Versionen des Visual Studios kompilierbar sind.

2.5.0.0 (freigegeben am 10.05.2018)

  • NEU: Unterstützung zur Erstellung von Knoten mittels benutzerdefinierten Knoten Identifizierer.
  • NEU: Vereinheitlichung der Konstruktoren-Überladungen aller Node-Klassen.
  • NEU: Viele der bisher fehlenden Code Documentationen der Node-Klassen wurden ergänzt.
  • NEU: Für jede Eigenschaft eines Knotens wurde die ensprechende XyNode Eigenschaft implementiert, welche die Referenz auf den Eigenschafts-Knoten bereitstellt welcher den Wert der bisher verfügbaren Xy Eigenschaften repräsentiert.
  • NEU: Unterstützung der späten Initialisierung von Knoten welche es erlaubt Xy Eigenschafts-Werte festzulegen, welche bei der Erzeugung der Eigenschafts-Knoten beim Start des Servers automatisch auf diese angewendet werden.
  • NEU: Komplette Überarbeitung der Klassen OpcNodeId und OpcNamespace. Teilweise Neuimplementierung beider Klassen zur Sicherstellung der maximalen Kompatibilität zu Foundation definierten Knoten Identifizierer Standards einschließlich der Features die durch das Framework geboten werden.
  • NEU: OpcNodeId unterstützt Identifizierer mittels Byte-Arrays, Guid's und vorzeichenlosen Integer Werten.
  • NEU: OpcNodeId drückt die Art des Identifizierers in der String-Repräsentation seines Identifizierer-Wertes über OpcNodeId.ToString aus.
  • NEU: OpcNodeId unterstützt UTF8 codierte Sonderzeichen in URL formatierten Knoten Identifizierern.
  • NEU: OpcNodeId unterstützt das Parsen von Foundation formatierten Knoten Identifizierern.
  • NEU: OpcNodeId bietet weitere Eigenschaften, wie OriginalString und OriginalFormat.
  • NEU: Überarbeitete OpcName Implementierung um nicht länger eine Kombination von BrowseName, DisplayName und SymbolicName in einer Instanz / Klasse zu vereinen.
  • NEU: IOpcNode, OpcNode und OpcNodeInfo stellen jetzt direkte Eigenschaften für den DisplayName (und SymbolicName) einer Node bereit.
  • NEU: OpcNodeInfo unterstützt das Browsing der Kinder und Eltern mittels Kombination von OpcNodeCategory Enumerations-Werten.
  • NEU: OpcClient.SubscribeEventRaise Methoden und OpcSubscribeEventRaise unterstützen jetzt eine OpcEventFilter Instanz für die Ereignisfilterung.
  • NEU: Vorhandene API bezüglich UA Alarm + Events wurde überarbeitet und hinsichtlich einer fließenden und intuitiven Schnittstelle einschließlich partieller späten Initialisierung (zur Performance-Steigerung) angepasst.
  • NEU: OpcEventRaiseEventArgs wurde überarbeitet und stellt über die Event Eigenschaft Snapshot-Informationen unter Verwendung der Raw-Daten des Events einer EventNode bereit.
  • NEU: MonitoredItem Eigenschaft wurde zu OpcDataChangeEventArgs und OpcEventRaiseEventArgs hinzugefügt.
  • NEU: Ereignisse DataChangedReceived und EventRaiseReceived wurden zur OpcSubscription hinzugefügt.
  • NEU: OpcEventType Enumeration und OpcEventTypes Klasse für den vereinfachten Zugriff auf die verschiedenen Eventtypen.
  • NEU: Unterstützung für unterschiedliche Zustandsautomaten- und Zustands-/Übergangsvariablen-Knoten.
  • NEU: DialogRequested Ereignis wurde der OpcClient Klasse hinzugefügt um einen einfachen Weg zur Verarbeitung von OpcDialogConditionNode Instanzen bereitzustellen.
  • NEU: Unterstützung von Foundation spezifischen Eventtypen: OpcConditionNode, OpcAcknowledgeableConditionNode, OpcDialogConditionNode, OpcAlarmConditionNode, OpcDiscreteAlarmNode, OpcLimitAlarmNode, OpcOffNormalAlarmNode, OpcSystemOffNormalAlarmNode, OpcTripAlarmNode, OpcExclusiveLimitAlarmNode, OpcNonExclusiveLimitAlarmNode, OpcExclusiveDeviationAlarmNode, OpcExclusiveLevelAlarmNode, OpcExclusiveRateOfChangeAlarmNode, OpcNonExclusiveDeviationAlarmNode, OpcNonExclusiveLevelAlarmNode und OpcNonExclusiveRateOfChangeAlarmNode.
  • BEHOBEN: Bezeichnung der Methode GetOutpuArguments der OpcMethodNodeInfo wurde zu GetOutputArguments geändert.
  • BEHOBEN: Problem mit DBNull Werten wenn kein Argumentwert bei Methodenknoten definiert wurde.
  • VERÄNDERT: Falschgeschriebene Member wurde korrigiert.
  • VERÄNDERT: Vereinheitlichte API durch das Hinzufügen von weiteren selbstbeschreibenden Bestandteilen zu Klassennamen und Delegatnamen. Im Wesentlichen wurde die Bezeichnung von Data auf DataSet, DataItem auf DataSetItem und EventRaise auf Event geändert.
  • VERÄNDERT: OpcNodeId.ToString formattiert die Informationen jetzt mittels OpcNodeIdFormat.Foundation Format.
  • VERÄNDERT: Reihenfolge der Subscription-Ereignisse wurde von MonitoredItem → Client → Subscribtion zu MonitoredItem → Subscription → Client geändert. Um eine logischere Abarbeitungsreihenfolgen beim Event-Bubbling sicherzustellen.
  • VERÄNDERT: OpcMonitoredItem.ReceivedDataChange wurde zu OpcMonitoredItem.DataChangeReceived umbenannt.
  • VERÄNDERT: OpcMonitoredItem.ReceivedEventRaise wurde zu OpcMonitoredItem.EventRaiseReceived umbenannt.

Kompatibilitätsbrüche (durch Umbenennungen):

  • OpcSubscribeEventRaise → OpcSubscribeEvent
  • OpcDataChangeEventArgs → OpcDataChangeReceivedEventArgs
  • OpcDataChangeEventHandler → OpcDataChangeReceivedEventHandler
  • OpcEventRaiseEventArgs → OpcEventReceivedEventArgs
  • OpcEventRaiseEventHandler → OpcEventReceivedEventHandler
  • OpcNotificationEventArgs → OpcNotificationReceivedEventArgs
  • OpcNotificationEventHandler → OpcNotificationReceivedEventHandler
  • OpcDataChangeCallback → OpcDataChangeReceivedCallback
  • OpcEventRaiseCallback → OpcEventReceivedCallback
  • IOpcNotificationData → IOpcNotificationDataSet
  • OpcNotificationData → OpcNotificationDataSet
  • OpcNotificationDataCollection → OpcNotificationDataSetCollection
  • OpcNotificationDataReadOnlyCollection → OpcNotificationDataSetReadOnlyCollection
  • OpcNotificationDataItem → OpcNotificationDataSetItem
  • OpcNotificationDataItemCollection → OpcNotificationDataSetItemCollection
  • OpcNotificationDataItemReadOnlyCollection → OpcNotificationDataSetItemReadOnlyCollection
  • OpcDataChange → OpcDataChangeSet
  • OpcDataChangeItem → OpcDataChangeSetItem
  • OpcEventRaise → OpcEventDataSet
  • OpcEventRaiseItem → OpcEventDataSetItem
  • OpcMonitoredItem
    • .EventRaiseReceived → EventReceived
    • .LastEventRaise → LastEvent
    • .OnEventRaiseReceived → OnEventReceived
  • OpcSubscription
    • .EventRaiseReceived → EventReceived
    • .ReceivedEventRaiseCallback → ReceivedEventCallback
    • .OnEventRaiseReceived → OnEventReceived
  • OpcClient
    • .EventRaiseReceived → EventReceived
    • .OnEventRaiseReceived → OnEventReceived
    • .SubscribeEventRaise → SubscribeEvent

2.3.2.0 (freigegeben am 13.03.2018)

  • BEHOBEN: Problem mit fehlerhaften DebuggerDisplayAttribute in OpcVariableNode und OpcNodeInfo.
  • BEHOBEN: Problem beim Lesen / Schreiben des DataType-Attributes von OpcVariableNodes.
  • VERÄNDERT: OpcVariableNode wurde als abstrakte Basisklasse festgelegt.
  • VERÄNDERT: Mehrfache Foundation Node-Referenzen wurden entfernt um die Speicherbedarf zu senken.
  • NEU: Erweitertung der Implementierung der OpcVariableNode speziell für Enumerations-Datentypen.
  • NEU: Neue Nodes OpcTypeNode und OpcDataTypeNode. Die OpcDataTypeNode unterstützt die Definition von benutzerdefinierten Enumerations-Datentypen.
  • NEU: Erweiterte Unterstützung beim Browsing für Enumerations-Datentypen. Unter Einsatz der neuen OpcTypeNodeInfo.GetEnumMembers() Methode werden alle Informationen über den Auflistungstypen bereitgestellt (siehe hierzu auch die neue OpcTypeNodeInfo.IsEnum Eigenschaft).

2.3.1.1 (freigegeben am 26.02.2018)

  • BEHOBEN: Problem beim Laden einer OpcApplicationConfiguration aus einer Datei aufgrund des fehlenden DataContract-Attributes auf der OpcApplicationConfiguration Klasse, welches bisher bei älteren Versionen des Frameworks nicht benötigt wurde.
  • NEU: Weitere Konstruktoren-Überladungen in OpcEngineeringUnitInfo um die Initialisierung für spezifische Einheiten zu vereinfachen.
  • NEU: ToString Überladungen in OpcEngineeringUnitInfo und OpcValueRange.
  • NEU: CommonCode Eigenschaft in OpcEngineeringUnitInfo + statische GetCommonCode(int unitId) Methode.
  • NEU: Das DefaultNamespaceUri der OpcEngineeringUnitInfo wird verwendet, wenn der Konstruktor ohne expliziten Namespace Parameter verwendet wird. Das ist nicht der Fall, wenn der Standard-Konstruktor verwendet wird.

2.3.1.0 (freigegeben am 22.02.2018)

  • ACHTUNG: Beginnend mit dieser Version muss eine Referenz zum NuGet Paket Portable.BouncyCastle (mindestens V1.8.1.3) oder eine Referenz zur BouncyCastle.Crypto Assembly (mindestens V1.8.1.146) zum Projekt hinzugefügt werden.
  • ACHTUNG: Wird eine Server Adresse mit dem Schema 'https' verwendet, dann muss eine Referenz zu den NuGet Paketen 'Microsoft.AspNetCore.Server.Kestrel (1.1.3)' und 'Microsoft.AspNetCore.Server.Kestrel.Https (1.1.3)' zum Projekt hinzugefügt werden.
  • NEU: Einführung des Range Datentypen als OpcValueRange.
  • NEU: Einführung des EUInformation Datentypen als OpcEngineeringUnitInfo.
  • NEU: Einführung des neuen Node-Typen AnlogItemType als OpcAnalogItemNode.
  • NEU: Unterstützung für DataValues welche die Datentypen Range und EUInformation verwenden.
  • NEU: Erweiterer Browsing-Support beim Browsen von Nodes der AnalogItemType-Definition mittels neuer OpcAnalogItemNodeInfo.
  • NEU: Upgedated auf die Zielframework Version .NET Framework 4.6.

2.3.0.0 (freigegeben am 13.02.2018)

  • NEU: Upgedated auf den OPC UA Foundation Stack V1.03.351.0.
  • NEU: Neue Sicherheits-Option für Client / Server zur Konfiguration von zusätzlichen Zertifikat-Validierungsregeln (siehe OpcClient/OpcServer.Security.CertificateValidationRules).
  • VERÄNDERT: Das Framework unterstützt nicht länger Windows basierte Authentifizierung mittels WinLogon-API bei der OPC UA Server Authentifizierung.
  • VERÄNDERT: Anwendungszertifikate werden jetzt mittels SHA256 erstellt (der neue Standardwert der von der Foundation vorgeschrieben wird). Dies beeinflusst keine bisherigen Anwendungen. Diese Änderung hat nur Einfluss darauf, wenn ein neues Zertifikat erstellt wird.

2.2.2.0 (freigegeben am 11.12.2017)

  • NEU: Erstellung von Filtern wurde mittels Operatoren-Überladung vereinfacht um eine natürlichere API zu erhalten.
  • NEU: OpcText wurde eingeführt um lokalisierbare und für den Menschen verständliche String-Werte zu repräsentieren.
  • BEHOBEN: Konfigurierte OperationTimeout wurde im OpcClient.Connect() nicht für das Discovering der Server-Endpunkte verwendet.
  • VERÄNDERT: OpcValue → ToString Implementierung wurde vereinfacht, sodass nur noch der String “null” für Null-Referenzen oder Value.ToString() geliefert wird.

2.2.1.0 (freigegeben am 06.09.2017)

  • NEU: Hinzufügen der Unterstützung von unvollständigen Zertifikatsketten, wenn das Gegenüber ein von einem unbekannten Aussteller unterzeichnetes Zertifikat vorlegt. Das ist beispielsweise beim Versuch einer Verbindung zu einer Siemens SIMOTION der Fall.
  • NEU: Erweitern der Unterstützung von fehlgeschlagenen Zertifikatsüberprüfungen durch Verwendung des CertificateValidationFailed Ereignisses in der OpcClient und OpcServer Klasse.

2.2.0.0 (freigegeben am 01.09.2017)

  • NEU: Hinzufügen des GetReferenceType, um den zugehörigen OpcReferenceType für einen gegebenen OpcNodeId des Typs Reference zu entfernen.
  • VERÄNDERT: Entfernen der Spezialbehandlung des Attributs DataType im OpcNodeInfo.Attribute(). Das bedeutet, dass nicht länger ein OpcDataType Wert zur Verfügung gestellt wird. Stattdessen wird der datentypabhängige OpcNodeId zur Verfügung gestellt.
  • NEU: Implementierung von grundlegender Unterstützung von Objektnodes und ausgeweiteter Unterstützung von Variablennodes, ebenso Implementierung von generischer Unterstützung von Typennodes (einschließlich ObjectTypes, VariableTypes und DataTypes) während des Browsens von Nodes.
  • NEU: Bei der Benutzung von OpcVariableNodeInfo, OpcObjectNodeInfo und OpcTypeNodeInfo ist es nun möglich, den Addressraum mithilfe von Zusatzinformationen über die Nodes zu browsen. Das beinhaltet z.B. auch die Typinformation eines Variablennodes mitsamt all seinen typspezifischen Metadaten einschließlich Über- und Untertypen.
  • NEU: Bereitmachen des Frameworks für die Benutzung unter .NET Standard und .NET Core 2.0.
  • NEU: Einführen der LicenseInfo Eigenschaft auf allen Licenser Klassen, um etwas Information über die verwendeten Lizenzbedingungen zur Verfügung zu stellen.

2.1.0.0 (freigegeben am 01-08-2017)

  • NEU: Upgedated auf den OPC UA Foundation Stack V1.3.342.0.

2.0.1.1 (freigegeben am 05.06.2017)

  • NEU: RegisterAddress / UnregisterAddress Methoden und neue Addresses Methode, um die verschiedenen Basisadressen einer OpcServerBase Instanz beizubehalten.
  • BEHOBEN: Falsche Bezeichnung von IsNodeAccessable im OpcNodeManager zu IsNodeAccessible.
  • BEHOBEN: Problem mit deformierten Nodenamensräumen beim Verwenden eines Namenraum-URI, der nur nach Schema aufgebaut wird, wenn der OpcNamespace.ToString() aufgerufen wird (= FormatException).
  • BEHOBEN: Problem mit der falschen impliziten Interprätation von Statuscodes als Ergebnisinformationen.

2.0.1.0 (freigegeben am 24.05.2017)

  • NEU: Hinzufügen von vielen Details in einer Nachricht einer OpcException und in der Beschreibung einer OpcStatus / OpcResult Instanz, um die Quelle / den Grund / das Ergebnis einer Operation besser darzustellen.

2.0.0.0 (freigegeben am 21.05.2017)

  • NEU: Verändern der the Assembly Version zu 2.0.0.0.
  • NEU: Implementieren von OpcCertificateSettings, um ein Anwendungsinstanz-Zertifikat zu konfigurieren, das durch den OpcCertificateManager erstellt werden kann.
  • BEHOBEN: Problem mit falsch konfigurierten Anwendungszertifikaten beim Verwenden eines Speicherpfads im Falle dessen, dass das Zertifikat unter diesem Pfad nicht gefunden werden kann.
  • BEHOBEN: Problem mit dem falsch gespeicherten Benutzername-Passwort-Paar in der UserName ACL (Access Control List), das zu einer fehlgeschlagenen Bebutzerauthentifizierung führte.
  • BEHOBEN: Problem beim Erstellen eines OpcNodeId unter Verwendung des string+int32 Paares, bei dem der int32 nicht für den Namensraumindex des neuen Node Identifiers benutzt wurde.
  • BEHOBEN: Problem mit OpcServerBase.Certificate und OpcClient.Certificate im Fall, dass das Zertifikat nicht im ApplicationStore des Zertifikatspeichers gespeichert ist.
  • NEU: Einführen von OpcClientCertificateStores (verfügbar über OpcClient.CertificateStores) und OpcServerCertitificateStores (verfügbar über OpcServerBase.CertificateStores), um einen fließenden API für Client und Server zum Verwalten und Warten ihrer Zertifikatspeicher zur Verfügung zu stellen.
  • NEU: Einführen von OpcClientServices (verfügbar über OpcClient.Services), um einen dienstbasierten API zum Aufbau der verschiedenen, vom Client genutzten Dienste zur Verfügung zu stellen.
  • ENTFERNT: “OpcValue.SourceLabel” und “OpcValue.ServerLabel”. Das beinhaltet auch, dass die “OpcValueLabel” Klasse nicht länger existiert. Die davon zur Verfügung gestellten Eigenschaften werden nun direkt von der “OpcValue” Klasse bereitgestellt. Benutzen Sie einfach die “OpcValue.ServerXy” und “OpcValue.SourceXy” Eigenschaften.
  • NEU: IOpcWriteNodesService unterstützt jetzt ein automatisches Feststellen des Wertes, den der Server für den SourceTimestamp eines OpcValue erwartet. Die automatische Bestimmung kann durch das Festlegen einer expliziten OpcTimestampSource durch Verwenden der IOpcWriteNodesService.TimestampSource Eigenschaft deaktiviert werden. Beachten Sie: Auf die IOpcWriteNodesService Instanz kann durch Verwenden der OpcClient.Services.WriteNodes Eigenschaft zugegriffen werden.
  • NEU: Entfernen des Benutzens der hinfälligen ResolveNodeId Methode und stattdessen Implementieren der neuen Resolve Methode auf der OpcNodeId, um den voll qualifizierten Node durch Verwenden des Namensraumarrays des Servers auf Anfrage zu bestimmen. Das unterstützt nun den Nodezugriff unter Verwendung des voll qualifizierten Node Identifiers ohne das Vorwissen des Indexes des zugehorigen Nodenamensraums.
  • NEU: Implementieren einer zusätzlichen Überladung der UpdateCertificate Methode, um manuell zu definieren, ob das Zertifikat erstellt werden soll, falls ein Zertifikat fehlt oder ungültig ist. Bisher war dies nur durch die Verwendung der statischen AutoCreateCertificate Eigenschaft möglich.
  • NEU: Implementieren der neuen Eigenschaften OpcClient.Certificate (um direkt ein benutzerdefiniertes Clientzertifikat zu definieren) und OpcClient.Security (um Client Sicherheitsoptionen innerhalb einer Klasse einzurichten).
  • VERÄNDERT: Umbenennen der Eigenschaft “OpcSecurity.Policies” zu “OpcSecurity.EndpointPolicies”, um dem “OpcClientSecurity.EndpointPolicy” Modell zu entsprechen.
  • VERÄNDERT: Definieren des Standardwerts von “OpcCertificateManager.AutoCreateCertificate” als true.
  • NEU: Implementieren der neuen Eigenschaften in Opc.UaFx.Server.OpcSecurity: AutoAcceptUntrustedCertificates und AutoCreateCertificate.
  • NEU: Implementieren der neuen OpcServer.Certificate Eigenschaft, um demselben API Modell zu entsprechen, das der OpcClient implementiert.
  • VERÄNDERT: Verhalten bei der Auswahl eines Endpunkts, auf den sich verbunden werden soll, verändert, damit es nicht länger verhandelbar ist, falls eine explizite Endpunktstrategie definiert ist.
  • VERÄNDERT: Definieren des Standards von AutoAcceptUntrustedCertificates in der SecurityConfiguration als true.
  • NEU: Implementieren des Unterstützens eines DefaultNodeManager - dies ist entweder der erste Manager in der Liste der definierten Manager, oder der intern definierte Standardnodemamager, der den Namensraum als “<serveraddress>/nodes/” definiert. Nun gibt es auch die Möglichkeit, nur eine Rückmeldemethode zu definieren, um die Nodes für den Adressraum des Standardnodemanagers zur Verfügung zu stellen.
  • VERSCHOBEN: “OpcClient.PreferredPolicy” Eigenschaft nach “OpcClient.Security.EndpointPolicy”.
  • VERSCHOBEN: “OpcClient.UseDomainChecks” Eigenschaft nach “OpcClient.Security.VerifyServersCertificateDomains” und Standardwert auf false vgeändert.
  • VERSCHOBEN: “OpcClient.UserIdentity” Eigenschaft nach “OpcClient.Security.UserIdentity” und dessen Typ vom Foundationtyp IUserIdentity zu OpcUserIdentity geändert.
  • VERSCHOBEN: “OpcClient.UseOnlySecureEndpoints” Eigenschaft nach “OpcClient.Security.UseOnlySecureEndpoints” und Standartwert auf false geändert.
  • ENTFERNT: Veraltete “OpcClient.UseAutoNodeIdResolution” Eigenschaft.
  • NEU: Überarbeiten / Überprüfen der OpcIdentity Ableitungen und Definieren der OpcCertificateIdentity, OpcWindowsIdentity, OpcServerIdentity und OpcClientIdentity als neue Ableitungen von OpcUserIdentity (bisher benutzten sie die OpcIdentity nur als ihre Basisklasse). Ebenfalls Verändern ihrer Konstruktionsverhalten, um den Prozess der Identitästerstellung auf Client- und Serverseite zu vereinfachen.
  • BEHOBEN: OpcRequestType.Call wurde bisher als OpcRequestType.Cancel definiert. Das führte zu unfunktionellem Verwenden des OpcRequestType.Call, weil es wie der OpcRequestType.Cancel verwendet wurde.
  • ENTFERNT: OpcCertificateManager.AutoCreateCertificate Eigenschaft, weil es nun als Instanz unter Verwendung von OpcClient.Security.AutoCreateCertificate oder OpcServer.Security.AutoCreateCertificate verwendet wird. Diese Eigenschaften sind auch standardmäßig auf den Wert true gesetzt.
  • ENTFERNT: OpcServer.Security.Owner Eigenschaft, um überflüssige Informationen zu reduzieren und den API zu vereinfachen.
  • UMBENANNT: “Server.OpcSecurity” zu “Server.OpcServerSecurity”.
  • UMBENANNT: “OpcServerSecurity.Anonymous” zu “OpcServerSecurity.AnonymousAcl”
  • UMBENANNT: “OpcServerSecurity.Certificate” zu “OpcServerSecurity.CertificateAcl”
  • UMBENANNT: “OpcServerSecurity.IssuedToken” zu “OpcServerSecurity.IssuedTokenAcl”
  • UMBENANNT: “OpcServerSecurity.UserName” zu “OpcServerSecurity.UserNameAcl”
  • UMBENANNT: “OpcClient.PreferredLocales” zu “OpcClient.Locales”
  • UMBENANNT: “OpcClient.ReceivedNotification” zu “OpcClient.NotificationReceived”
  • UMBENANNT: “OpcClient.OnReceivedNotification” zu “OpcClient.OnNotificationReceived”
  • UMBENANNT: “OpcSubscription.ReceivedNotification” zu “OpcSubscription.NotificationReceived”
  • UMBENANNT: “OpcSubscription.OnReceivedNotification” zu “OpcSubscription.OnNotificationReceived”
  • VERSCHOBEN: OpcNodeCommand von Opc.UaFx.Client nach Opc.UaFx.Services.
  • VERSCHOBEN: OpcNodeAttributeCommand von Opc.UaFx.Client nach Opc.UaFx.Services.
  • UMBENANNT: “OpcNodeCommand” zu “OpcNodeServiceCommand”.
  • UMBENANNT: “OpcNodeAttributeCommand” zu “OpcNodeAttributeServiceCommand”.
  • UMBENANNT: OpcStatusCode Mitglieder mit “Bad”, “Good” und “Uncertain” Präfixen wie die OPC Faindation sie verwendet, um Statuscodes in diese drei Kategorien zu unterteilen.
  • NEU: Implementieren von zusätzlichen ReadNode Überladungen, um den numerischen Node Identifier zusammen mit einem Namensraumindex und zu lesendem Attribut zu definieren.
  • NEU: Implementieren von neuen ReadNodes Methoden, um mehrere Nodes unter Verwendung eines spezifischen Attributs zu lesen.

1.6.5.2 (freigegeben am 07.02.2017)

  • VERÄNDERT: Entfernen von impliziten Interprätationen eines numerischen Node Identifiers, der als String verlüsselt ist.

1.6.5.1 (freigegeben am 08.12.2016)

  • NEU: Implementieren eines erweiterten Timeout Handlings für Read History Anfragen des OpcClients. Das ist notwendig, um dem Server zusätzlich Zeit zu verschaffen, um die historischen Daten zu sammeln, falls dies mehr Zeit als gewöhnlich benötigt und der Server aufeinanderfolgende Weiterführungspunkte bereitstellt, solange bis die Datensammlung abgeschlossen ist.

1.6.5.0 (freigegeben am 07.12.2016)

  • NEU: Erweitern der Node History Navigation im Falle eines festgelegten Zeitfenstert (in dem StartTime und EndTime nicht gleichgesetzt sind mit MinDate). Daher werden historische Nodewerte auf jede Seitenanfrage eingesammelt, solange der Server einen Weiterführungspunkt bereitstellt bis entweder der Server keinen Weiterführungspunkt mehr bereitstellt oder bis die Seite ihre Seitengröße erreicht hat.

1.6.4.0 (freigegeben am 12.10.2016)

  • NEU: Updaten der IOpcNode Interfacedefinition hinsichtlich des momentanen öffentlichen OpcNode API.
  • NEU: Implementieren der neuen Methode Children() : IEnumerable<IOpcNode> in den IOpcNode, um physikalische Kinder im Nodebaum zu bestimmen.

1.6.3.0 (freigegeben am 06.10.2016)

  • NEU: Implementieren der neuen Methode OpcFileMethods.IsFileNode, um zu bestimmen, ob auf einen Node wie auf einen FileType zugegriffen werden kann.
  • BEHOBEN: Out of memory Problem bei der Verwendung von OpcFile.ReadAllText und OpcFile.ReadAllLines.
  • NEU: Verbessern der Leistung von OpcFile.ReadAllText, um den Text nicht länger durch die Zeilen einer Datei zu konstruieren, stattdessen benutzt es jetzt den binären Strom einer Datei.
  • NEU: Allgemeine Optimierung des Tempos beim Lesen und Schreiben von Dateikomponenten durch Verwenden der clientkonfigurierten MaxByteStringLength.
  • BEHOBEN: Problem beim browsen von Nodes, die Remotenodes enthalten, was zur Ausnahme 'Cannot cast an absolute ExpandedNodeId to a NodeId. Use ExpandedNodeId.ToNodeId instead.' führte.

1.6.2.0 (freigegeben am 04.10.2016)

  • NEU: Implementieren der neuen Methode CreateTempCertificate, die auch in Fällen verwendet wird, in denen AutoCreateCertificate auf true gestellt ist und in denen das Zertifikatsgenerator-Dienstprogramm nicht installiert ist. Daher muss das Zertifikasgenerator-Dienstprogramm nicht länger zum Testen / Entwickeln neben OPC Anwendungen implementiert sein.
  • BEHOBEN: Problem beim Öffnen von Dateien zum Schreiben - die Zugriffsmaske wurde falsch verifiziert.
  • NEU: Implementieren des neuen Session Resource Manager, um alle sitzungsbezogenen Ressourcen zu entsorgen, nachdem eine Sitzung abläuft oder schließt. So eine Ressource ist der interne Dateihandle, wenn via OPC auf Dateinodes zugegriffen wird. Falls der Client die Verbindung zum Server aus irgendeinem Grund verwirft, gibt der Session Manager jetzt alle durch die Sitzung gewonnenen Ressourcen wieder frei.

1.6.1.0 (freigegeben am 14.06.2016)

  • NEU: Implementieren der OpcNodeManager.Browse Methode, um benutzerdefiniertes Browsen in unterklassifizierten Szenarios zu unterstützen.

1.6.0.0 (freigegeben am 25.08.2016)

  • NEU: Ausgrenzen von Attributen ohne Wert aus dem automatischen Updaten der Ursache des Wertes, wenn ein Nodewert geschrieben wird. Umgehungen, damit ein expliziter OpcValue benutzt werden kann, sind nun hinfällig.
  • NEU: Einführen der neuen Ableitung OpcBrowseNodeContext, besonders für das Browsen von Nodes, und Reduzieren des bisherigen OpcNodeContext auf eine eher generische Implementierung für weiteres Subklassifizieren. Der neue OpcBrowseNodeContext beinhaltet nun den Node Identifier des Nodes, von dem die Browse-Operation ursprüngich eingeleitet wurde.
  • NEU: Einführen der OpcValue.As<T> Methode, um den repräsentierten Wert als einen spezifischen Typ abzufragen, indem der Wert in den von T. spezifizierten Typen umgewandelt wird.
  • NEU: Implementieren der neuen OpcResult Klasse, um ServiceResult Instanzen zu repräsentieren.
  • NEU: Implementieren der Unterklasse OpcMethodContext von OpcContext, um Systeminformationen zu bestimmen, die sensibel gegenüber Methodenaufrufen sind, einschließlich des aufgerufenen Methodennodes und seines Ziels. Dies beinhaltet auch das Speicher des Ergebnisses des Aufrufs der Rückmeldemethode.
  • NEU: Implementieren der Unterstützung der Dateisystemzugägnlichkeit für OpcFileNode Objekte aus Clientsicht. Das beinhaltet eine einfache 1:1 API Schicht, implementiert durch die OpcFileMethods Klasse, einen SafeOpcFileHandle, um sicherzustellen, dass zugeteilte Dateihandles freigegeben werden, die OpcFile Klasse zum Implementieren einer OPC-basierten System.IO.File Klasse wie “set of service” Methoden, die OpcFileInfo Klasse zum Implementieren einer OPC-basierten System.IO.FileInfo Klasse wie “object” und die OpcFileStream Klasse zum Implementieren eines OPC-basierten System.IO.FileStream wie “object”, der von der System.IO.Stream Klasse abstammt und daher von allen StreamReader und StreamWriter Klassen benutzt werden, die dich das .NET Framework bereitgestellt werden.
  • NEU: Implementieren des neuen OpcPropertyNode und OpcPropertyNode<T>.
  • VERÄNDERT: Der Typ OpcVariableValue benötigt nun einen generischen Typparameter für den repräsentierten Wertetyp. Die OpcVariableNode Klasse wurde bezüglich dieses Typparameters aufgenommen.
  • NEU: Implementieren des neuen OpcFileNode, inklusive seiner child Nodes wie die Methodennodes Nodes Open, Close, GetPosition, SetPosition, Read und Write.

1.5.11.7 (freigegeben am 28.07.2016)

  • BEHOBEN: Problem mit Remotenode Identifiern im OpcNodeId.
  • BEHOBEN: Problem mit dem Vergleichen von Node Identifiern verschiedener Typen im OpcNodeId.

1.5.11.6 (freigegeben am 17.06.2016)

  • NEU: Implementieren der Kindmethode in OpcNodeInfo, um die Nachfolger eines Nodes durch Verwenden seines OpcName auszulesen. Dies beinhaltet den BrowseName, DisplayName und SymbolicName eines Nodes.
  • NEU: Implementieren der Elternmethode in OpcNodeInfo, um die Vorfahren eines Nodes durch Verwenden seines OpcName auszulesen. Dies beinhaltet den BrowseName, DisplayName und SymbolicName eines Nodes.
  • NEU: Implementieren der Kindmethode in OpcNodeInfo, um die Nachfolger eines Nodes einer spezifischen OpcNodeCategory auszulesen.
  • NEU: Implementieren der Elternmethode in OpcNodeInfo, um die Vorfahren eines Nodes einer spezifischen OpcNodeCategory auszulesen.

1.5.11.5 (freigegeben am 13.06.2016)

  • NEU: Implementieren eines impliziten Cast Operators für ExpandedNodeId's.
  • NEU: Implementieren einer zusätzlichen Get Methodenüberladung im OpcNamespace, um Nodenamensräume durch die Verwendung von URI oder Index auszulesen.
  • BEHOBEN: Problem mit ExpandedNodeId's in OpcValue's und deren Handling wurde vereinfacht simplified.

1.5.11.4 (freigegeben am 30.05.2016)

  • NEU: Minimierung von Lock Bedingungen beim Lesen / Schreiben von Nodes.

1.5.11.3 (freigegeben am 02.05.2016)

  • NEU: Demo-Lizenz wurde erneuert, um eine neue Lizenzperiode bereitzustellen.

1.5.11.2 (freigegeben am 18.04.2016)

  • BEHOBEN: Problem mit überwachten Elementen beim lesen des Initialwertes eines Nodes (der Server lief im Falle von ungefilterten überwachten Elementen in eine NullReferenceException).

1.5.11.1 (freigegeben am 31.03.2016)

  • NEU: Implemented the Changed event on OpcStatus.
  • BEHOBEN: Issue with the not synchronized OPC Status from SDK to the foundation stack (on OpcValue and OpcVariableNode).

1.5.11.0 (freigegeben am 2016-03-23)

  • NEU: OpcNamespace, der die gesamte Namensrauminformation eines Node Identifiers repräsentiert (Namespace Index und Namespace Uri).
  • NEU: IOpcNamespaceResolver, der durch OpcNodeManager, OpcClient und OpcServer implementiert wird. Diese Schnittstelle stellt verspätete gebundene Namensraumauflösung zur Verfügung, nachdem der OpcServer gestartet oder der OpcClient verbunden wurde. Jeder OpcNodeId, dessen Namensraum aufgelöst wurde, stellt die voll qualifizierte URL des Namensraums zusammen mit dem Node Identifier zur Verfügung.
  • NEU: OpcNodeId.Namespace Eigenschaft, um den verbundenen OpcNamespace bereitzustellen.
  • VERÄNDERT: Umbenennen von OpcAttribute.Historizing zu OpcAttribute.IsHistorizing.
  • NEU: OpcNode: Implementieren einer Nodeveränderungsüberwachung über die Eigenschaften HasPendingChanges und PendingChanges, inklusiver der Methode IsChangePending.
  • NEU: Implementieren von Historyunterstützung von OpcVariableNode und seine Unterklassen.
  • NEU: Ausweiten von Konstruktorüberladungen der OpcStatusCollection für ein weitaus einfacheres Erstellen einer neuen Instanz durch OpcStatusCodes.
  • NEU: HDA Methoden auf dem Client zum Lesen und Updaten der Node History.
  • NEU: HDA Schnittstelle auf dem Server, um die benötigte Logik zum Handlen des Zugriffs auf historische Daten bereitzustellen.
  • NEU: HDA Dienste: IOpcReadNodesHistoryService und IOpcUpdateNodesHistoryService.
  • NEU: HDA befehle: OpcCreateNodeHistory, OpcDeleteNodeHistory, OpcDeleteNodeHistoryAtTime, OpcDeleteNodeHistoryModified, OpcReadNodeHistory, OpcReplaceNodeHistory und OpcUpdateNodeHistory. Alle davon sind Unterklassen von OpcNodeHistoryCommand.

1.5.10.0 (freigegeben am 03.02.2016)

  • ADDED: OPC Watch Anwendung zum Assembly-Archiv.

1.5.9.1 (freigegeben am 2016-01-25)

  • BEHOBEN: Problem mit einer falsch geöffneten Sitzung, obwohl sie im Falle einer Neuverbindung wiederverwendet werden kann.

1.5.9.0 (freigegeben am 21.01.2016)

  • BEHOBEN: Mögliche Multithreading-Probleme in einem Sitzungs-KeepAlive im OpcClient.
  • VERÄNDERT: Das BreakDetected Ereignis wird nun nur ausgelöst, wenn der Neuverbindungs-Timeout gleich Null ist.
  • BEHOBEN: Falls eine OPC Client Sitzung geöffnet wird, die schon entsorgt wurde, konnte das in manchen Fällen zu einem unerwünschten Neuverbinden zum Server aufgrund einer verworfenen ObjectDisposedException durch die bereits entsorgte Client Sitzung führen.

1.5.8.0 (freigegeben am 18.01.2016)

  • NEU: Updaten der Lizenzierungslogik.

1.5.7.1 (freigegeben am 14.01.2016)

  • BEHOBEN: Problem mit dem kleinstmöglichen PublishingInterval in der OpcSubscription Klasse.

1.5.7.0 (freigegeben am 09.01.2016)

  • BEHOBEN: Problem mit der Nullreferenzausnahme im OpcCertificateManager.CreateCertificate, wenn ein applicationUri als Nullreferenz (Nothing in Visual Basic)behandelt wird.
  • BEHOBEN: Problem mit nicht eindeutig generierten OpcNodeId's für InputArguments und OutputArguments der OpcMethodNode Instanzen. Das führte zu dem Verhalten, dass nur die Argumente des am neuesten bereitgestellten OpcMethodNode beim Browsen / Lesen der Methodenargumenteigenschaften veröffentlicht wurden.
  • VERÄNDERT: Der OpcNodeId für InputArgument und OutputArgument Nodes von OpcMethodNode Instanzen, für mehr Informationen werfen Sie eien Blick auf das vorherige Thema.
  • VERÄNDERT: Die OpcReadOnlyNodeCollection Klasse stellt jetzt IOpcNode Instanzen bereit statt der internen NodeState Foundationinstanzen.
  • NEU: Ein OpcNodeId kann jetzt aus OpcName Instanzen konstruiert werden, deren SymbolicName eine Nullreferenz (Nothing in Visual Basic) ist. In diesem Fall wird statt des SymbolicName der BrowseName verwendet.
  • NEU: Die OpcReadNodesRequest liefert nun standardmäßig beide Zeitstempel (Quelle und Server) zurück.
  • NEU: Imlementieren der neuen OpcNodeManager Methoden: AddNode, RemoveNode und IsNodeAccessable.
  • BEHOBEN: Problem mit zeitweisen ACE (Access Control Entires)-Duplikaten, falls ein ACE angefragt wird, der bereits in eine ACL hinzugefügt wurde.

1.5.6.8 (freigegeben am 17.12.2015)

  • BEHOBEN: Problem mit verpasstem TimeStamp Update auf dem Schreiben von Nodewerten.
  • BEHOBEN: Problem mit verpassten TimeStamp Daten auf dem Lesen von Nodewerten.

1.5.6.7 (freigegeben am 17.12.2015)

  • NEU: Implementieren der ChangePassword Methode in OpcServerIdentity, um das Benutzerpasswort zu ändern, nachdem eine Identität angelegt wurde.
  • NEU: Implementieren der geschützten SystemContext Eigenschaft im OpcNodeManager, um einen alternativen Kontext bereitzustellen, in dem systeminterne Veränderungen vorgenommen werden können.
  • NEU: Die OpcWriteNode Klasse setzt nun automatisch den Ursprungszeitstempel beim Schreiben eines Nodes.
  • VERÄNDERT: Das OpcValueLabel ist nun nicht weiter als Struct definiert, sondern als Klasse.

1.5.6.6 (freigegeben am 16.12.2015)

  • NEU: Implementieren von AddNode und RemoveNode im OpcNodeManager, um das dynamische Bereitstellen von Nodes nach dem Aufruf von CreateNodes zu unterstützen.

1.5.6.5 (freigegeben am 10.12.2015)

  • NEU: Hinzufügen von zusätzlichen Sitzungsinformationen zu OpcOperationContext beim Aufruf von IsNodeAccessable im OpcNodeManager.

1.5.6.4 (freigegeben am 09.12.2015)

  • NEU: Implementieren der IsNodeAccessable Methode im OpcNodeManager, um benutzerdefiniert zu spezifizieren, ob auf einen Node von innerhalb der Ansicht zugegriffen werden kann.

1.5.6.3 (freigegeben am 08.12.2015)

  • BEHOBEN: Problem mit ACE-Duplicaten beim manuellen Hinzufügen von zusätzlichen Einträgen auf Nachfrage.

1.5.6.2 (freigegeben am 12.10.2015)

  • BEHOBEN: Problem beim Lesen und Schreiben von OpcValue Instanzen und Arrays as Nodewerte auf Client- und Serverseite.
  • BEHOBEN: Problem beim anonymen benutzerlogin auf der Serverseite beim Erstellen eines OpcSession Objekts.
  • NEU: Implementieren einer Umleitung für den Fall, dass der Stringwert, der an den Konstruktor (string, int) der OpcNodeId Klasse weitergeleitet wird, einen numerischen Identifier angibt. Nun wird ein OpcNodeId mit dem numerischen Identifier initialisiert statt mit dem Stringwert.

1.5.6.1 (freigegeben am 08.09.2015)

  • BEHOBEN: Problem, wenn Anonymous und UserName ACLs gleichzeitig aktiviert sind.
  • NEU: Implementieren von zusätzlichen CreateCertificate Überläufen im OpcCertificateManager.

1.5.6.0 (freigegeben am 07.09.2015)

  • VERÄNDERT: Umbenennen der BuiltInType Eigenschaft zu DataType in der OpcAttributeInfo.
  • NEU: Browsen des DataType Attributs resultiert nun in einem Mitglied des OpcDataType Aufzählungswertes.
  • NEU: Implementieren des OpcValue als Ersatz für die DataValue Klasse.
  • NEU: Implementieren der statischen CreateCertificate Methode im OpcCertificateManager, um Zertifikate von der Stange zu erstellen.
  • NEU: Die OpcStatus Klasse stellt nun die neue OpcStatusCode Aufzähung als Code bereit.
  • NEU: Implementieren von Unterstützung der OpcDataTypes: ExtensionObject, Value und Variant.
  • VERÄNDERT: Umbenennen von DataValue zu Value in OpcDataTypes.
  • NEU: Implementieren von Unterstützung, um das Browsen mithilfe eines Methodennodes direkt zu beginnen.
  • VERÄNDERT: Verschieben von OpcDiscoveryClient nach Opc.UaFx.Client Namensraum.
  • BEHOBEN: Problem mit der NullReferenceException, wenn ungecachte Nodes gebrowst werden.
  • NEU: Implementieren von Unterstützung der Verwendung einer Nullreferenz für eine Anwendungs-URI, um Zertifikate zu erstellen.
  • NEU: Implementieren einer neuen Abstraktionsschicht für verschiedene OPC Server Typen (OpcServerBase).
  • NEU: Implementieren einer neuen OPC Server Spezialisation: OPC Discovery Server.
  • BEHOBEN: Problem im OPC Client beim Zugriff auf die interne Sitzungsinstanz, obwohle diese verworfen wurde.

1.5.5.3 (freigegeben am 25.08.2015)

  • NEU: Vereinfachen der Benutzung von OpcVariableClass in Lese- / Schreibrückmeldungen durch das Feststellen des Status und des Zeitstempels (falls kein anderer spezifiziert wurde) der Nodeinstanz.

1.5.5.2 (freigegeben am 24.08.2015)

  • BEHOBEN: Problem, wenn Anonymous und UserName ACLs gleichzeitig aktiviert sind.
  • NEU: Entfernen des OpcAccessControlMode Mitglieds 'Default' und Ersetzen seiner Verwendung mit Blacklist.

1.5.5.1 (freigegeben am 24.08.2015)

  • BEHOBEN: Problem mit dem Null DataType in VariableNodes.

1.5.5.0 (freigegeben am 24.08.2015)

  • NEU: Implementieren verschiedener Rückmeldeeigenschaften zum Lesen / Schreiben von OpcNode Attributen.
  • NEU: Implementieren geschützter virtueller Methoden zum Lesen / Schreiben von OpcNode Attributen.
  • NEU: Implementieren spezifischer Rückmeldeeigenschaften zum Lesen / Schreiben von OpcVariableNode Attributen.
  • NEU: Implementieren geschützter virtueller Methoden zum Lesen / Schreiben von OpcVariableNode Wertattributen.
  • NEU: Die OpcSession Klasse stellt nun die Eigenschaften UsedIdentity und SuppliedIdentity bereit.
  • NEU: Implementieren der Update Methode in OpcStatus.
  • NEU: Der OpcContext stellt nun eine Identity Eigenschaft bereit.
  • NEU: Implementieren der neuen OpcMonitoredItem Klasse in den Server Namensraum.
  • NEU: OnMonitoredItemCreated/Deleted/Modified stellt nun andere Klassen als die der Foundation bereit.
  • VERÄNDERT: Verschieben der Identity und ImpersonationContext Klassen von Opc.UaFx.Server nach Opc.UaFx Namensraum.

1.5.2.0 (freigegeben am 18.06.2015)

  • NEU: Ausschluss des automatischen Updates des Endpunkts vor dem Verbinden in Fällen, in denen ein bevorzugter Endpunkt im OpcClient definiert ist.
  • NEU: Implementieren einer neuen Endpunktidentitätssicherheit in OpcSecurity, um verschiedene Endpunkte für einen oder mehrere ACEs zu aktivieren / deaktivieren. Zusätzlich wurden einige existierende Methoden umbenannt.
  • NEU: Implementieren des StateChanged Ereignisses in OpcClient.

1.5.1.1 (freigegeben am 16.05.2015)

  • NEU: Implementieren der InvokeService Method in OpcClient, um unter Verwendung eines try-catch-finally Blocks Dienstroutinen hervorzurufen, damit versichert ist, dass die Statuseigenschaft des Clients auch den Verbindungsstatus im Falle einer Ausnahme behandelt, der besagt, dass die Verbindung ein Timeout war, verloren wurde, usw.
  • BEHOBEN: Problem mit Nullreferenzen als DisplayName und BrowseName in OpcReferenceDescription.

1.5.1.0 (freigegeben am 15.06.2015)

  • NEU: Implementieren der SaveCertificate Methode im OpcCertificateManager.
  • NEU: Überarbeiten der kompletten Argumentenbindung, um auch out und ref Parameter im OpcMethodNode zu unterstützen.
  • NEU: Implementieren der ByRef Type Unterstützung im OpcMethodNode.
  • NEU: Implementieren des lokalen Server CertificateValidationFailed Event, um benutzerdefinierte fehlgeschlagende Zertifikatvalidierungsaktionen zu unterstützen.
  • NEU: Implementieren der neuen OpcNodeInfo, abgeleitet von OpcMethodNodeInfo zum Browsen der Methodennodeargumente.
  • NEU: Implementieren der neuen OpcCertificateValidationFailedEventArgs und OpcCertificateValidationFailedEventHandler.
  • NEU: Implementieren der DataType Eigenschaft im OpcDataVariableNode.
  • NEU: Implementieren der InputArguments und OutputArguments Eigenschaften in der OpcMethodNode Klasse. Zusätzlich Ausweitung der Unterstützung von OpcArgument Instanzen mit dem OpcArgumentAttribute in benutzerdefinierten Delegaten.
  • NEU: Implementieren von Unterstützung for Nullreferenzen in allen impliziten Cast Operatoren, die mit Referenztypen arbeiten.

1.5.0.0 (freigegeben am 10.06.2015)

  • NEU: Implementieren einer Logik, um eine servererfüllende Konfiguration beim Start zu generierenlogic.
  • NEU: Komplette Überarbeitung der Endpunktauswahl über den OpcDiscoveryClient und benutzerdefiniert bevorzugt den OpcSecurityPolicy.
  • NEU: Verbesserung der automatischen Vervollständigung der Konfiguration, abhängig von ihrem Anwendungstyp.
  • NEU: Einführen der Transportprofilinformationen.
  • NEU: Verschieben der Konfoguration der UserTokenPolicies zum OpcServer beim Start und Verbesserung der Nachvollziehbarkeit der IsEnabled Eigenschaft.
  • BEHOBEN: Problem mit leeren Zersifikatspeicherpfaden.
  • NEU: Komplette Überarbeitung des Nodereferenzmechanismus, um mehr Informationen bereitzustellen, während die Nodereferenzen erstellt werden und auch OPC Interna aus dem Benutzer API zu entfernen.
  • NEU: Komplette Überarbeitung der bisher existierenden Nideimplementierungen und Verschieben ihrer Basisklassenreferenz in eine interne Referenz, um den Umgang mit dem Framework zu verbessern und angepasster an CLSCompliant zu werden, indem mehr nützliche APIs bereitgestellt werden.
  • NEU: Implementieren von Unterstützung von Discovery Server Basisadressenkonfiguration.
  • NEU: Verbesserung der Konfigurationsstandards, auch beim Laden von Konfiguration durch eine der Load Methoden. Zusätzlich Implementieren einer Standartunterstützung von DiscoveryServerConfigurations.
  • NEU: Weitere Vereinfachung des API.
  • NEU: Einführen des Ersatzes für StatusCode → OpcStatus.
  • NEU: Überarbeiten des OpcDiscoveryClient von Factorymethoden zu Konstruktorbedienung, um eine fließende Schittstelle zwischen allen Server- und Clientklassen zur Verfügung zu stellen.

1.4.0.0 (freigegeben am 09.06.2015)

  • NEU: Zusammenlegen von Opc.ClientFx.Advanced und Opc.ServerFx.Advanced zu Opc.UaFx.Advanced.

1.0.0.0 (freigegeben am 11.01.2015)

  • NEU: Erstellen von Opc.ClientFx.Advanced und Opc.ServerFx.Advanced.