******************************************************************************** ******************************************************************************** ******************************************************************************** ** ** ** Version 1.6.2.431 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Enable scrollbars for children if children cannot be edited. * Use all available space for editing the node attributes. ------------------------ Bug Fixes ------------------------ * Lock fields of enum values if enum name is empty. It was possible to edit the SymbolicName and the description of an enum value if the enum name was not set. These changes have not eben saved when accepting the document with OK. Now it is not possible to edit the fields, if the changes will be lost after accepting. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modeling ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Uncheck Null box when a value gets edited. * Support of importing binary encoded ExtensionObjects in XML files. If a NodeSet2 XML file stores the content of ExtensionObjects as a ByteString, UaModeler can import this value and store it as ByteString again. It is not possible to edit or evaluate an ExtensionObject that has been imported as ByteString with UaModeler. * Add ParentNodeIds on import. If a NodeSet2 XML file does not support ParentNodeIds, UaModeler adds them on import. The ParentNodeIds are only added if the whole XML file does not contain any ParentNodeId. ParentNodeIds are required for generatig code and modelling. * Setting SymbolicName of Default JSON on import if not set. * Check Method arguments on importing model. If the method arguments do not fit to their instance declaration, the method arguments of the instance declaration are copied when the model is imported. * Remove encoding nodes of enumerations when a model is imported. ------------------------ Bug Fixes ------------------------ * Fixes setting ArrayDimensions. In some cases the ArrayDimensions attribute could not be set. The entered values have been marked as invalid and rejected by UaModeler. Now ArrayDimensions can be set. * Fixes SymbolicNames for encoding nodes. The SymbolicNames for newly created encoding nodes have not been set when "Update Encoding Nodes" has been called. As a result the generated code did not compile. When reloading the model the SymbolicNames have been updated by UaModeler. Now suitable SymbolicNames are set directly when "Update Encoding Nodes" is called. * Fixes selecting type node. When a TypeDefiniton was selected in the treeview for selecting types that has already been selected when the tree view opened, the children of the type have not been added to the instance. Now the children are added. * Fixes displaying of Null box for values. The check box for null values was not evaluated correctly in same cases. Now the check box for null values is set and evaluated correctly. * Fixes check of value type on import. When importing a model having a node with an abstract DataType (like Integer) and having a value with a concrete subtype as DataType UaModeler complained in the output window that this value does not fit to the DataType of the Variable. Now UaModeler does not complain if the Value attribute has a DataType that is a subtype of the DataType attribute. * Fixes crash when laoding a model with an invalid NamespaceIndex. If a model was loaded that has a Method with arguments where one of the arguments has a DataType with a NamespaceIndex that is not specified in the NamespaceUris of the model, UaModeler crashed. The crash could only occur for models that are created with other tools than UaModeler. Now DataTypes of Method arguments with an invalid NamespaceIndex are ignored and set to a null NodeId. * Fixes widget for LocalizedText. If only the Locale of a LocalizedText was edited, this change was not recognized by UaModeler. * Fixes widget for QualifiedName. If only the NamespaceIndex of a QualifiedName was edited, this change was not recognized by UaModeler. * Disable creating values of abstract DataTypes. It was possible to create values of abstract DataTypes what is not correct regarding OPC UA specification. Now the Value attribute can only be edited if the DataType is not abstract. * Reset DataType of Method arguments if DataType is deleted. If a DataType was used in a Method argument and the DataType was deleted, the DataType in the Method argument was still the NodeId of the deleted DataType. Now the DataType of arguments are set to BaseDataType if the DataType gets deleted. * Copy Method arguments after changing instance declarations. If the Method arguments of a Method that is defined at an ObjectType have been modified, the updates have not been applied to the instances. Now the changes are applied to the instances. * Fixes moving enumerated DataType to other namespace. If the NamespaceIndex of an enumerated DataType has been changed, DataTypeEncoding and DataTypeDescription nodes have been added for the DataType. These nodes shall only be added to structured DataTypes. Now enumerated DataTypes can be moved to other namespaces correctly. * Fixes normalzing of NamespaceUris. When an XML file was imported the used NamespaceUris have been normalized. The used normalizing method converted parts of the Uri to lower case. As a result some referenced models could not be found because the NamespaceUris did not match in some cases. Now the importing of the XML files has been fixed. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ C++ ------------------------ * Create less empty line in NodeManagerBase.cpp. ------------------------ .NET ------------------------ * Do not register structured DataTypes twice. * Only register non abstract structured DataTypes to communication stack. * Create sbtarct class for abstract structured DataTypes. * Remove version number of UnifiedAutomation assemblies in generated project. * Fixes generated event field for variables with DataType LocalizedText and ValueRank OneDimension. ------------------------ HP ------------------------ * Implement method arguments with arrays of structured DataTypes. * Fixes options to include addressspace as static code. ******************************************************************************** ******************************************************************************** ******************************************************************************** ** ** ** Version 1.6.1.423 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Save widths of columns in children view. The widths of the columns in the children view are saved in the settings of UaModeler. ------------------------ Bug Fixes ------------------------ * Fixes canceling of closing UaModeler. UaModeler closed unexpectedly when closing UaModeler was canceled by the user. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modeling ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Support of NamespaceUris with whitespaces. * Make values nullable. ------------------------ Bug Fixes ------------------------ * Fixes changing parent. If an ObjectType or VariableType that was used as an instance declaration in another type was modified, the children of this instance declaration have been deleted. Now the children of the instance declaration do not get deleted when a type gets modified. * Fixes setting ArrayDimensions. There have been scenarios where the ArrayDimensions attribute could not be set correctly. The gui blocked changing this attribute even if its value was not correct. Editing ArrayDimensions has been fixed. * Fixes handling of big numbers When setting the value of a Variable with DataType UInt32 to a value greater than UInt32_Max / 2, the value was not saved correctly. Now the value is saved correctly. * Fixes usage of ValueRank. When creating an instance of a VariableType, the ValueRank of the VariableType were not used for the instance. It was possible to change the ValueRank of the instance to an unallowed value. Now you can only set the ValueRank at the instance if it is possible regarding the OPC UA specification. * Clear value if ValueRank changes. The values of Variables did not get modified when the ValueRank changed. As a result the ValueRank of the value did not match the ValueRank defined at the attribute of the node. Now the value gets cleared if the ValueRank changed. * UpdateValueRank and DataType when VariableType changes. If the DataType or the ValueRank of a VariableType changed, these changes have not been applied to all instances of the type. Now the instances get updated correctly. * Fixes editing of ModellingRules of Methods. The ModellingRule of a Method that overrides a Method with ModellingRule OptionalPlaceholder could be changed to ModellingRules that are not allowed regarding the OPC UA specification. Now you can only change the ModellingRule to Optional or Mandatory. * Fixes displaying "Select Placeholder components" button. If an InstanceDeclaration had a TypeDefinition with a child with ModellingRule OptionalPlaceholder and an instance was created, the button "Select Placeholder components" was not shown, if the child was selected. As a result you could not create children related to the instance declaration with the dialog. Now the button is displayed if the similar node has children ModellingRule OptionalPlaceholder or MandatoryPlaceholder. * Fixes setting parent of nodes. It was possible to set a property as new parent of a variable. But properties must not be the source of hierarchical references. Selecting a new parent has been fixed. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ General ------------------------ * Fixes handling of string NodeIds with number content. If a NodeId of a nodes had NodeIdType String and a StringIdentifier with a string that could be parsed to a number (e.g. "42"), the NodeId was interpreted as NodeId with a numeric identifier. As a result parts of the generated code did not compile or were missing. These NodeIds are handled correctly now. ------------------------ C++ ------------------------ * Set Executable attribute of Methods. * Add special handling for TrueState and FalseState properties in event types. ------------------------ .NET ------------------------ * Support of all NodeIdTypes for code generation. ------------------------ HP ------------------------ * Initial version of templates has been added. ******************************************************************************** ******************************************************************************** ******************************************************************************** ** ** ** Version 1.6.0.413 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Display error trace in red. Error messages are added in red color to the output window. * Linux version as AppImage. The linux version of UaModeler is provided as AppImage. ------------------------ Bug Fixes ------------------------ * Fixes check if model has been modified. When a NodeSet XML file is imported UaModeler checks if it was changed outside UaModeler. If the line endings of the file changed, UaModeler popped up a message that the model was modified. If only the line endings have changed, UaModeler does not pop up the messages now. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modeling ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Update addressspace. UaModeler uses the OPC Foundation namespaces defined with specification 1.04 now. * Add Default JSON encoding nodes. There is an option to add Default JSON encoding nodes for structured DataTypes in new models. * Encoding NodeIds editable. It is possible to edit the NodeIds of encoding nodes for structured DataTypes like Default Binary or Default XML now. * Add option to add or remove Default JSON encoding nodes for all structured DataTypes in a model. * Add options to add or remove DataTypeDescription and DataTypeDictionary nodes in a model. * Remove EncodingTable attribute. The generated schema files for structured DataTypes contained an attribute called EncodingTable. This attribute has been removed in OPC UA specification 1.04. This attribute is not generated anymore. * Enable adding a reference to a locked model. It was not possible to add a reference to a node of a locked model even if the target node was not part of a locked model. It is possible to add a reference to a node of a locked model if the target node is not part of a locked model now. * Usage of OptionalPlaceholder and MandatoryPlaceholder for Methods. The OPC UA specification 1.04 added a description for the usage of the ModellingRules OptionalPlaceholder and MandatoryPlaceholder for Methods. When creating an instance, Methods with one of these ModellingRules can be updated according to the new description for the ModellingRule now. * Reuse NodeId identifier when changing the namespace. If the namespace of node is changed, the identifier of the old NodeId will be used if possible. If this NodeId already exists, UaModeler creates a unique NodeId. * Remove UserAccessLevel, UserExecutable and UserWriteMask. The OPC UA attributes UserAccessLevel, UserExecutable and UserWriteMask are not editable and not saved now. These attributes are obsolete in NodeSet XML files. * Fixes editing of ArrayDimensions attribute. Default values for ArrayDimensions are created according to the current ValueRank. Checks have been added to avoid ArrayDimensions that are not correct in relation to the ValueRank. * Add ArrayDimensions and MaxStringLength for structure fields. * Support of AccessLevelEx. ------------------------ Bug Fixes ------------------------ * Fixes DataType of NodeIdsType. The value of the child NodeIdsType of NamespaceMetaDataType was saved with the wrong DataType in the internal binary format. An error was traced in the Output window of UaModeler. The exported XML file has been correct. The value is saved correct now. * Check locked models when deleting reference. It was possible to delete a reference in a locked model. The locked models are checked before deleting a reference now. * Fixes DataType of node after TypeDefinition changed. If the TypeDefinition of a Variable changed the DataType of the Variable was not changed. As a consequence it was possible that Variables had invalid DataTypes after changing the TypeDefinition. The DataTypes are updated now. * Fixes creating children with ModellingRule MandatoryPlaceholder. If a child of a type has the ModellingRule MandatoryPlaceholder, the child always was created when an instance of the type was added to a model, even if the requirement for adding the variable was complied by other children. Now these children are only added automatically if required. * Use concrete DataType for values of OptionSet DataTypes. If a value of an OptionSet DataType that is a subtype of OptionSet was created, the TypeId in the ExtensionObject of the value was OptionSet instead of the concrete DataType. Now the correct DataType is used. * Fixes marking model as modified after calling Recalculate NodeIds. Models have not been marked as modified after calling Recalculate NodeIds. As a consequence it was not possible to save a model directly after calling this. The model is marked as modified now. * Fixes recalculating NodeId. If Recalculate NodeIds was called and a child was referenced twice by hierarchical references and this child had children, there have been scenarios where the children of the child have not been updated. Now the NodeIds of all child nodes are updated. * Fixes importing nodes with BrowseNames containing a ':'. If a NodeSet XML file was imported that contained a node with a BrowseName containing a ':', the BrowseName was not parsed correctly. So the BrowseName was not correct. Now the BrowseName is imported correctly. * Fixes crash when changing DataType to a subtype of OptionSet. There was a potential crash when changing the DataType of a Variable to a subtype of OptionSet. This has been fixed. * Fixes Apply Type Changes to Instances. If Apply Type Changes to Instances was called, the DataTypeDescription nodes of structured DataTypes have been removed. Now these nodes are not deleted. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ C++ ------------------------ * Add templates for SDK 1.6. * Fixes generated code for Variables with DataType NodeId and ValueRank Scalar and a Value edited in UaModeler. * Support of Enumeration. If a Variable had the abstract DataType Enumeration, the getters and setters and the static nodes have not been created. The abstract base type Enumeration is supported now. * Fixes generate code for structures with subtypes as method arguments. The generated code did not compile if a Method argument had ValueRank OneDimension and a structured DataType that has a subtype. The generated code does compile now. * Fixes event field getter for arrays of structures. If there was ab EventType having an Object as child which has a Variable which DataType is a custom structured DataType and the ValueRank is OneDimension, the generated code did not compile. The generated code compiles now for these event fields. * Support event fields that are children of Objects. ------------------------ Ansi C ------------------------ * Add templates for SDK 1.8. * Support of AccessLevelEx. * Add _hooks.h to have a place for global defines/variables that are not overwritten ------------------------ .NET ------------------------ * Fixes exception when accessing instance of VariableType with simple DataType. If the adressspace had an VariableType with a simple DataType like Double and an instance of this type and LinkModelToNode was called for the instance, an exception was thrown when when reading the Variable. Now reading the node works without an exception. * Fixes optional EventFields with DataType DateTime. If an EventType has an optional Child with DataType DateTime, an exception was thrown when UpdateEvent was called. The templates have been fixed. * Add option for supporting Methods defined at children when using LinkModelToNode. ******************************************************************************** ******************************************************************************** ******************************************************************************** ** ** ** Version 1.5.2.398 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ ------------------------ Bug Fixes ------------------------ * Fixes Extension document. In some cases the extensions entered in the Extensions document could not be saved. The 'OK' button was disabled. The extensions can be saved now. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modeling ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Support of references from Method nodes. Additional references can be created with a Method node as starting node. ------------------------ Bug Fixes ------------------------ * Fixes crash when moving a structure to another namespace. UaModeler crashed if the NamespaceIndex of a structured DataType has beed edited. This crash has been fixed. * Fixes references for nodes with ModellingRule OptionalPlaceholder. If a type has a child with ModellingRule OptionalPlaceholder and an instance of this type exists and an additional reference is added in the type hierarchy of the TypeDefinition of the child, the newly added additional reference was not added to the instance. The reference is added now in the hierarchy of the instances. * Fixes references to optional nodes. If an instance of a type, that had a child node with ModellingRule Optional and was target of more than one reference within the type hierarchy, was created and the optional child was created in the second step, only the first reference to the optional child was created. Now all references are created. * Setting description of data type dictionaries. After changing the NamespaceUri of a model the descriptions for the data type dictionaries have not been updated. The descriptions are using the new NamespaceUri now. * NamespaceUri in NamespaceMetaDataType not correct. If a model had an instance of NamespaceMetaDataType and the NamespaceUri of the model was updated, the NamespaceUri property in the instance of NamespaceMetaDataType was not updated. The property is updated now. * SymbolicNames for dictionaries. The binary data type dictionary and the XML data type dictionary had the same SymbolicName. Now the SymbolicNames of the dictionaries get extended by "_DefaultBinay" or "_DefaultXml". The symbolic names of dictionaries of already existing models are updated on import. The output window informs the user about an update. This update on import can be disabled. * Fixes XML namespace of structure fields. If a structured DataType had a field with a structured DataType defined in namespace 0 and a value of this structured DataType was created, the XML namespace for the field with the DataType defined in namespace 0 was not correct if the model was exported to an XML file. The correct namespace uri is used now. * Fixes crash for enums without property. If a enumerated DataType did not have an EnumStrings or an EnumValues property, UaModeler crashed when selecting the enumeration node. This is only relevant for invalid models that are not created with UaModeler. The crash is fixed now. * Setting ModellingRules for instance declarations. If optional children of instance declarations have been added, the references to the modelling rule nodes have not been created. The references are created now. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ C++ ------------------------ * Support of Method arguments with ValueRank > 1. * Fixes selector enumeration for unions. The enumeration for selecting the current union field has been renamed to avoid potential naming conflicts. Only the names of the stack types have been modified. The names in the toolkit classes did not change. * Fixes subtypes of OptionSet. The generated code did not compile for subtypes of OptionSet. This has been fixed. ------------------------ Ansi C ------------------------ * Setting of ArrayDimensions in Method arguments. * Added stubs for historical data. Added stubs for HistoryReadProcessed, HistoryReadAtTime, HistoryUpdateData, HistoryUpdateStructureData, HistoryDeleteRaw, HistoryDeleteAtTime, HistoryUpdateEvent, HistoryDeleteEvent and HistoryUpdate. * Use of SymbolicNames of DataTypeDictionaries. The variable names for the dictionary identifiers have been derived from the ProviderName. Now the SymbolcName of the dictionaries from the model is used. * Check if XmlEncodingId is present. There is a CMake option to omit the XmlEncodingId from the EncodeableType structure. If this option was set to true, the generated code did not compile. The preprocessor option has been added to the generated code. * Fixes generated code without UASERVER_SUPPORT_AUTHORIZATION. If UASERVER_SUPPORT_AUTHORIZATION was not set, the generated code did not compile if the model defined Methods. The generated code is fixed for the case that UASERVER_SUPPORT_AUTHORIZATION is not set. * Add option to generate types library. There is now a CMake option to generated a library that contains the files needed for DataTypes. ------------------------ .NET ------------------------ * Implement template constructor. The template constructor of the Model classes created an instance of the Model with default values. The properties of the template have been ignored. The properties of the template are used for the new instance now. ******************************************************************************** ******************************************************************************** ******************************************************************************** ** ** ** Version 1.5.1.386 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Save state of Extensions document. The open state of the tabs in the Extensions document is saved now. ------------------------ Bug Fixes ------------------------ * Other icon for locked models. If a model is locked and selected for code generation, the icon for locked models was displayed. Now the icon for code generation is displayed. * Fixes References window. If additional references have been added to the References tab, the last added reference has not been added to the node after clicking OK in some cases. Now the reference is added to the node after clicking OK. * Fixes crash when creating new project. If a new project was created while a project was loaded, UaModeler crashed when confirming the wizard. UaModeler does not crash now if a new project is created. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modeling ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ * Fixes list of locked models after project update. If a model was removed from a project, the locking status of models with a higher NamespaceIndex than the removed model were not correct. If a model was added to a project, the locking status of models with a higher NamespaceIndex than the added model were not correct. Now the locking status of the models is not updated. * Lock preinstalled models. All models that are distributed by UaModeler are locked now. * Fixes displaying additional references after changing the namespsace. If a node having additional references was selected and the namespace of this node was changed, the list of additional references has been cleared. If this empty list was not edited, the additional references have not been deleted. If the list was edited, the additional references have been deleted. The content of the References tab is correct now after changing the namespace. * Fixes setting attributes. If single attributes of nodes in the Children tab have been edited, these changes have not been saved if the attributes have been NodeClass dependent. E.g. if only the AccessLevel attribute of a Variable has been updated, this change has not been saved. Now all modifications of attributes are saved. * Fixes moving Method to other namespace. If the namespace of a Method node has been changed, the namespace of the InputArguments and OutputArguments property was not set to the namespace of the Method. The namespaces of the properties of a Method are updated correctly now. * Fixes crash when updating NamespaceUri. If the NamespaceUri of a model has been changed using the model settings dialog, UaModeler crashed. The NamespaceUri of a model can be updated now. * Fixes exporting of MinimumSamplingInterval. If a model was loaded from binary and exported as XML, the MinimumSamplingInterval attribute of Variables has not been saved. The MinimumSamplingInterval attribute is exported to XML now. * Fixes exporting XML for types with equal names. If a DataType or ReferenceType from another model is used in a model that defines a ReferenceType or DataType with the same name, the exported XML file used the same Alias name for the two types. Only the first type is used as Alias now. * Fixes selecting parent node. It was not possible to select BaseObjectType as parent node when modifying an ObjectType. BaseObjectType can be selected again. * Fixes importing of arrays of enumerations. Arrays of enumerated DataTypes have been imported from XML as arrays of integers. Importing arrays of enumerations from binary did work correctly. Importing arrays of enumerations from XML is correct now. * Fixes exporting of NodeIds. UaModeler crashed when "Export NodeIds" has been called for models containing nodes that are not referenced with hierarchical references from root. UaModeler does not crash now when "Export NodeIds" is called. * Fixes crash when changing the namespace of structured DataType. If the namespace of a structured DataType has been changed using the Namespace ComboBox, UaModeler crashed. UaModeler does not crash now if the namespace is changed. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ C++ ------------------------ * Add missing null pointer check for event fields with DataType LocalizedText. * Only use Type name in generated code. The getFieldData and clearFieldData methods called methods of the generated Base class explicitly. For some types, these classes do not exist in NodeManagerRoot. As a result, the generated code did not compile. Only methods of the class are called now. ------------------------ Ansi C ------------------------ * Fixes calling Methods declared in other model. If an instance of an ObjectType with a Method as instance declaration is created in another model than the ObjectType, the Method at the instance could not be called. The Method at the instance can be called now. * Create event field getters and setters for Variables only. Getters and setters for event fields have been created for Variables and for Objects. Event fields for Objects are not defined by OPC UA. The getters and setters are generated for Variables only now. * Fixes memory leak for Methods with structured DataTypes. If a Method having a structured DataType as input argument had been called by a client, a memory leak was created by the generated code if the used structured DataType had a field with a variable length (e.g. DataType String or an array of any DataType). The generated code for calling Methods does not produce this memory leak anymore. ------------------------ .NET ------------------------ * Fixes declaration of used .NET namespaces. If an ObjectType or a VariableType is inherited from a type of another model that is not the OPC Foundation standard model, the namespace of the parent type has not been declared. The namespace of the parent type is declared now. * Fixes Variables with structured DataTypes and ValueRank 1 If the instance declaration of a child of an Object or a Variable has an abstract DataType and the child has a structured DataType and ValueRank 1, the property representing the child in the generated model class was created as scalar instead of an array. The property is created as an array of structures now. * Generate code for methods defined at Objects. Code is created for Methods that are defined at Objects that are children of types now. * Fixes used name of method property. The generated code did not compile for ObjectTypes that are defining Methods and having a supertype which supertype also defines Methods. The generated code compiles now for these kind of ObjectTypes. * Fixes used method interface. The generated model classes for ObjectTypes defining Methods and having a supertype also defining Methods was not correct. The .NET interface for the OPC UA Method implementation was the interface of the parent type and not of the actual type. As a result of this bug, the Methods defined by the actual type could not be called if LinkModelToNode was used. Now the correct interface is used. ******************************************************************************** ******************************************************************************** ******************************************************************************** ** ** ** Version 1.5.0.376 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Check for updates. There is an automatic check whether a newer version of UaModeler is available. This automatic check can be disabled. * Rework settings dialog. The dialog to edit the settings of the UaModeler has a new layout. ------------------------ Bug Fixes ------------------------ ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modeling ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Locking of models. Models can be locked in the GUI. Locked models cannot be edited. * Mark modified model. Modified models are marked with a '*' in the project view. * Removing of models. Models can be removed from the project. * External update of models. Models can be updated from files. UaModeler binary files or NodeSet2 XML files can be used. * Add model at index. The position of a model in the project can be chosen when adding a model. * Compression of numeric identifiers. The numeric identifiers of a model can be compressed to be successive. * Add check for ReferenceType attributes. A new ReferenceType can only be added if it is symmetric or the InverseName is specified. * Disabling of namespaces. Types for TypeDefinition, DataType, or ReferenceType can only be used for nodes with the same or a higher NamespaceIndex than the NamespaceIndex of the NodeId of the node. * Support of NodeSet2 XML files with multiple namespaces. * Publish model. Add dialog to add the publishing information of a model. The "Models" node in the NodeSet2 XML file and an instance of NamespaceMetaObjectType that contains the information are added. * Add exporter of NodeIds. It is possible to export a CSV file containing the identifiers of the NodeIds of a model in the same format that is used for the CSV files for NodeId identifiers provided by the OPC Foundation. * Enter NodeAccessInfo. NodeAccessInfo is an extension of the OPC UA schema defined by Unified Automation to specify single access permissions per node. This information can be used for SDKs of Unified Automation. It can be expected that this feature will be updated to the OPC UA standard behavior that is currently under development by the OPC UA working group. * Enter user defined extensions. UaModeler now contains an XML editor to enter user defined extensions for nodes and models. * Enter documentation. An editor to add additional documentation to nodes has been added. This information is being stored in the Documenatation field defined in the NodeSet2 schema and in the binary file of UaModeler. The documentation is not part of the address space of a server. * Add additional references. A dialog to add additional references to nodes of the same instance declaration hierarchy has been added. Additional references are used especially for models based on the DI model. * Improvements in add placeholder dialog. * Add check for symbolic names. It is no longer allowed to create two types with the same SymbolicName. This avoids problems with generated code. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ C++ ------------------------ * Support of NodeAccessInfo for SDK 1.5. ------------------------ Ansi C ------------------------ * Support of NodeAccessInfo for SDK 1.7. ------------------------ .NET ------------------------ * Fixes documentation for generated classes. ******************************************************************************** ******************************************************************************** ******************************************************************************** ** ** ** Version 1.4.4.363 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ ------------------------ Bug Fixes ------------------------ * Fixes crash when selecting node with different NodeClass. UaModeler crashed if the parent of a node was changed and second node with different NodeClass was selected before the document was confirmed by clicking 'OK' button. This has been fixed. * Fixes crash when adding a child to BaseObjectType. The children tab was enabled for BaseObjectType. After adding a child in this tab and confirming the document with "OK", UaModeler crashed. The children tab is disabled now. * Fixes displaying of dead nodes. If a child of an ObjectType has been deleted, the information model tree view has not been updated for instances of such type. As a result, non-selectable and unremovable nodes have been displayed. The model has been updated correctly, this was only a display issue. The tree view is updated correctly now. * Fixes displaying ModellingRules. The ModellingRule OptionalPlaceholder has been displayed as mandatory for instances. This was only a display issue. The ModellingRule is displayed correctly now. * Minor bug fixes. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modeling ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ * Fixes crash when modifying structure. UaModeler crashed if a structured DataType that does not have encoding nodes had been modified. Structured DataTypes without encoding nodes cannot be created using UaModeler. So this crash could only occur for models that have been created or modified outside UaModeler. The existence of encoding nodes is checked now. If they do not exist, an error message is traced. * Use BrowseNames in dictionaries. In binary and XML dictionaries, the SymbolicName has been used for type names. Now the BrowseName is used for the type names to support type names with special characters. * Fixes adding unexpected reference. For nested ObjectTypes with a depth of at least four, additional references to instance declarations have been added unexpectedly when changing an instance declaration node of a type that is used by the nested type. The references to the instance declaration nodes are not added now. * Fixes adding additional references. If a child of an instance declaration with ModellingRule Optional has been referenced by another instance declaration of the same type with an additional reference, this additional references has not been added to an instance of the type if the optional child was added after the instance was created. The additional reference is create at the instance now. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ General ------------------------ * Quote handling for BrowseNames. If a BrowseName of a node contains a quote, the generated code did not mask out this quote. As a result, the generated code did not compile. Quotes are now masked for BrowseNames. ------------------------ C++ ------------------------ * Create event fields before initializing. * Fixes include of instance factories. When having an ObjectType where the TypeDefinition of a child is located in a different model than the standard model of the OPC Foundation, in some cases, the generated code did not compile if instances of the type are part of the model, because of a missing include to the instance factory. The include to the instance factory is generated now. * Fixes of include of NodeManager for VariablesTypes. For VariableTypes having grandchildren that are using types from a different model than the standard model of the OPC Foundation, in some cases the generated code did not compile, because of a missing include to the NodeManager defining the used type. The include is added now. ------------------------ Ansi C ------------------------ * Use of string literals instead of string table entries for browsename.h. * Support of parents with ReferenceType Organizes. * Do not generate code for a value of a structured DataTypes without fields. The generated code did not compile if a structured DataType without fields was used for a Variable. The generated code compiles now. * Support identifier strings with backslashes. * Add argument name and argument description to string table. * Set EventNotifier only if events are enabled in the SDK. * Fixes SetEventField function for arrays of structured DataTypes. Because of a wrong check of the array length, the server application crashed when calling the generated SetEventFiels function for an event field having a structured DataType and ValueRank 1. The check has been fixed. ------------------------ .NET ------------------------ * Add templates for SDK 2.5.0 * The generated code did not compile for ObjectTypes having UA Methods and at least two super types having UA Methods, too. The generated code compiles now for these types. ******************************************************************************** ******************************************************************************** ******************************************************************************** ** ** ** Version 1.4.3.352 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Remember dialog size in node selection dialog. ------------------------ Bug Fixes ------------------------ * Fixes usage of standard model settings after changing the TemplateSet If the TemplateSet of a project has been changed using the wizard of "Project -> Project Settings...", the default settings defined of the model have not been filled in correctly. This error only occured for the standard models for DI and PLCopen when changing the TemplateSet to a C++ TemplateSet. The standard settings are used now. * Disable generating of standard models after changing the TemplateSet. If the DI or PLCopen model was selected for generating, the model remained selected for generating after changing the TemplateSet to C++ or Ansi C. As a result, nonexecutable code was created, since DI and PLCopen code is already available in C++ and Ansi C SDK. This error could only occur when changing the TemplateSet from .NET or Modeling Only to C++ or ANSI C. The code generation setting for the DI and PLCopen model is disabled after changing to C++ or ANSI C now. * Update NamespaceUri property of DataType dictionaries. The DataType, Value and ValueRank attribute of the NamespaceUri property of DataType dictionaries are updated automatically when importing a model. Older versions of UaModeler and other tools did not set the attributes correctly. * Fixes for loading projects. When laoding projects, in some cases the selected TemplateSet could not be found because of an error when reading the project file. As a result the TemplateSet had to be selected again. This has been fixed. * Minor bugfixes ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modeling ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ * Fixes creating additional references. Not all references that are defined in the References tab of type or InstanceDeclaration documents targeting nodes in the scope of the same type have been added when creating instances of the type. Now, all references that are defined at the type are created when creating instances. * Fixes crash when saving models with structured DataTypes without fields. UaModeler crashed when saving models that contain structured DataType nodes without a structure definition. This crash did not occur for models that have been created using UaModeler. The existence of structure definitions is checked now when saving a model. * Update DataType of overrided nodes. If the DataType of a Variable is changed, the DataType of overridden nodes has not been updated. After updating the DataType of a Variable, the DataTypes of overridden nodes are now checked and updated if necessary. * Fixes selcting optional children of InstanceDeclarations. The selction of optional children for InstanceDeclarations did not work correctly. Not all optional children of the TypeDefinition could be selected. The selection dialog for optional children is correct for InstanceDeclarations now. * Fixes crashs when deleting nodes. If a node having Organizes references to type nodes was deleted via the context menu of the node, the node and the type node had been deleted. The deletion of the type node could have unwanted side effects resulting in crashs of the UaModeler. If a node is deleted via the context menu, type nodes are filtered now. * Fixes crash if TypeDefinition could not be found. UaModeler could crash if the TypeDefinition of a Variable node could not be found. This could only occur for models that are using types from an unavailable namespace. The most probable reason for this behavior is manually modifying a project file of UaModeler. The existence of the TypeDefinition node is checked now. * Distinguish between NodeId Identifier types. For nodes with string identifiers that can be interpreted as numerics (like "123") the node selection dialogs could return the wrong node. The Identifier type of the NodeId is taken into account now. * Minor bug fixes. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ General ------------------------ ------------------------ C++ ------------------------ * Add Organizes references from children of ObjectTypes to other nodes. Organizes references from InstanceDeclarations to other nodes have not been created in the createTypes method for ObjectTypes and in the constructors of the type. These references have been missing at the type nodes and when creating instances in the code. The Organizes references are added now. * Fixes includes if types from other models are used. If TypeDefinitions, DataTypes and ReferenceTypes from other models than the current model and the OPC Foundation standard model are used, includes for the respective NodeManager, InstanceFactory or DataType include files could be missing. The generated code did not compile in these cases. The includes are added now. * Fixes DataType for Variables defined at Variables. If a Variable is defined at another Variable using a DataType from other models than the current model and the OPC Foundation standard model, the generated code did not compile. The generated code compiles now. * Generate descriptions for InstanceDeclarations. The description attribute was not set for InstanceDeclarations. The description attribute is set now. * Use of SymbolicNames for Enumerations. The DisplayName of EnumValues has been used instead of the SymbolicName. As a result, uncompilabe code was generated if the DisplayName of an EnumValue contained special characters like a space or '*'. The SymbolicName is used now. * Constructor for Alarms defined at Objects. If an instance of an AlaramType is defined at an InstanceDeclaration whose NodeClass is Object, the constructor of the AlarmType was not used correctly. As a result, the generated code did not compile. The constructor is called correctly now. * Fixes include for DataType of Method arguments. If a structured DataType defined in the standard namespace of the OPC Foundation is used as a method argument, the generated code did not compile because of an invalid include for the DataType. The include is correct now. * Add support of DataType Number. If the DataType Number was used for Variables, the generated code did not compile. This feature is supported now. * Add const getters. There are new methods to return the child nodes of ObjectTypes and VariableTypes using the const qualifier. * Fixes some warnings in the generated code. ------------------------ Ansi C ------------------------ * Breaking change: Method stubs for methods defined at Objects. The name and location of generated method stubs changed for Methods defined at Objects which are children of a type. The method name changed from _ to ___. The location of the method stub changes from the namespace global method implementation file to the type specific method implementation file. This beaking change only has an effect if methods are defined at Objects. After updating and regenerating the code, compiler errors will occur. To resolve them, you need to cut the old method implemetation and paste it to the new location. * Add templates for SDK 1.6. * Cast EnumValues. In the generated code for EnumValues a cast to OpcUa_Void** was missing resulting in uncompilabe code for some compilers. The cast has been added. * Avoid double creation of children. If a child is referenced multiple times with hierarchical references, the child was created multiple times in the generated code. The provider start-up failed when adding the node for the second time. There is a check now for already created nodes. * Use default values for enumerations defined in DI model. If enumerations defined in the DI standard models are used for Variables, incompilable code for the default value of the Variable was generated. The default value is correct now. * Include for DI model. If nodes from the DI model are used, an include was missing. The generated code did not compile. The include is added now. * Support for EnumValueType. Add support of arrays of EnumValueType for Variables, e.g. for the EnumValues property of the MultiStateValueDiscreteType. * Minor bug fixes. ------------------------ .NET ------------------------ * Using of other models. If a model is using DataTypes from another model than itself or the standard OPC model, the reference to the model of the DataType was missing. This error resulted in incompilable code. This error did not occur if ObjectTypes or VariableTypes have been used from the other model, too. The .NET namespace of the DataType is added now. * Fixes identifier names. The identifier names of NodeIds for historical configuration objects and for instances that are hierarchically referenced twice have not been correct in the generated code. As a result, the generated code could have the same C# variables for different NodeIds resulting in uncompilabe code. The identifier names are fixed now. * Minor bug fixes. ******************************************************************************** ******************************************************************************** ******************************************************************************** ** ** ** Version 1.4.2.342 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modeling ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ * Fixed support of fully-inherited instance declaration hierarchy. If an additional child was added to an overridden node of an ObjectType or VariableType without updating the TypeDefinition of the overridden node, the additional child was not added when creating instances of the type. This has been fixed. * Fixed crash when moving a structure to another namespace. If a structured DataType was moved to another model and a Variable using the DataType already existed, there have been scenarios leading to a crash of UaModeler. Structured DataTyped can be moved to other models now without a crash. * Fixes setting NamespaceIndex of BrowseNames of Encoding nodes. If a structured DataType has been moved to another model, the BrowseNames of the encoding nodes have been updated although these BrowseNames should not be updated. The BrowseNames of the encoding nodes are now still correct after moving a structured DataType to another model. The incorrect BrowseNames of the encoding nodes are now corrected when a model is loaded. * Minor bugfixes. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ General ------------------------ * Fixes selecting a model for code generation. After the template set changed from C++ to .NET, the DI and the PLCopen models could not be selected for code gernation. .NET code can be generated for DI and PLCopen models now. ------------------------ C++ ------------------------ * Fixes for using enumerations defined in another namespace. In some scenarios the auto-generated code did not compile if enumerations defined in other namespaces have been used for variables as children of ObjectTypes of VariableTypes. This has been fixed. ------------------------ Ansi C ------------------------ * Additional checks whether alloc succeeded * Minor changes in formating of the auto-generated code * Shallow copy of NodeIds in RegisterNodes function ******************************************************************************** ******************************************************************************** ******************************************************************************** ** ** ** Version 1.4.1.329 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Adds a check box for (de)selecting all models in Show/Hide Models dialog. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modeling ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ * Fixes enabling of children view. If a node of the standard namespace (e.g. Objects folder) was selected, the children view was disabled. Because of that reason, children could only be added via the context menu of the node and not via the children view. This has been fixed. * Fixes default value of union switch field. The default value for a switch field of a value of a union DataType was -1 instead of 0. If a value of the union DataType was created and not modified, the (null) value was not stored correctly. The default switch value is 0 now. * Fixes clearing values after modifications of structured DataTypes. If a value of a structured DataType has been created and the definition of the DataType changed, not all values of this DataType have been cleared. As a result, UaModeler could crash if the variable containg the value of the structured DataType is selected when saving the model. This bug only occurred for nested structures if a definition of a child changed. All values of structured DataTypes get cleared now if the definition or the definition of a child changes. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ ------------------------ C++ ------------------------ * Add new templates for Unified Automation ANSI C++ SDK 1.5.0 supporting - Union DataTypes - Structured DataTypes with optional fields - OptionSet DataTypes - Methods for setting NodeAccessInfo * Support of StatusCode BadTooManyArguments * Support of ArrayDimensions * Create default values for ValueRank > 1 * Support of EnumStrings and EnumValues as properties of DiscreteItemTypes ------------------------ Ansi C ------------------------ * Add error checks of memory allocations. ------------------------ Bug Fixes ------------------------ ------------------------ All template sets ------------------------ * Fixes string identifiers containing quotation marks. For identifiers containing an '"' the generated constant did not mask the '"', resulting in non compilable code. This has been fixed. ------------------------ C++ ------------------------ * Minor bugfixes. ------------------------ Ansi C ------------------------ * Fixes code for structures without fields. The generated code did not compile if a structured DataType was defined without having a field and a subtype of this structured DataType without having a field, too. The generated code compiles now. ******************************************************************************** ******************************************************************************** ******************************************************************************** ** ** ** Version 1.4.0.315 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Add Cancel button to stop code generation. * Add project type for modeling only. * Show folder icon for subtypes of FolderType. ------------------------ Bug Fixes ------------------------ * Fixes deleting of the first output argument of a method. It was not possible to delete the first output argument of a method. This has fixed. * Fixes deleting encoding nodes. If a structured DataType that has a subtype was deleted via context menu, the encoding nodes of the subtype have not been deleted. This has been fixed. * Fixes structure fields with DataType String in DataTypeDictionaries. The DataType of fields with OPC UA DataType String has been mapped to "opc:String" instead of "opc:CharArray" in the DataTypeDictionary for binary encoding. As a result clients that use the dictionary to evaluate the content of values of structured DataTypes could not interpret all values correctly. This has been fixed. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modeling ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Support of Union DataTypes. * Support of structured DataTypes with optional fields. * Support of OptionSet DataTypes. * Support of access levels StatusWrite and TimeStampWrite. * Create DataTypeDictionary for XML Schema. * Import and Export of Extenions defined for a NodeSet2 XML file. * Add option to create new NodeIds for an instance and its children. ------------------------ Bug Fixes ------------------------ * Fixes adding nodes to References tabs. If a node has been hierrarchically referenced twice, the node has always been displayed in the Children tab. For that reason the additional hierarchical reference could not be deleted. The references are displayed in the correct tab now. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ ------------------------ Ansi C ------------------------ * Support of Union DataTypes. * Support of structured DataTypes with optional fields. * Support of OptionSet DataTypes. * Support of access levels StatusWrite and TimeStampWrite. ------------------------ .NET ------------------------ * Support of Union DataTypes. * Support of structured DataTypes with optional fields. * Support of OptionSet DataTypes. * Automatic export of NodeSet2 XML model file to codegeneration target. * Support of abstract DataTypes Number, Integer, UInteger and Enumeration. * Partial classes for structured DataTypes. The generated classes for structures DataTypes are using the keyword partial now. This allows the user to added own code without modifying the generated code. ------------------------ Bug Fixes ------------------------ ------------------------ Ansi C ------------------------ * Minor bug fixes. ------------------------ C++ ------------------------ * Generate code for non-hierarchical references. The generated code for non-hierarchical references from ObjectType nodes to other nodes was missing in the generated code. Non-hierarchical references are added now. * Minor bug fixes. ------------------------ .NET ------------------------ * Minor bug fixes. ******************************************************************************** ******************************************************************************** ** ** ** Version 1.3.5.298 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ ------------------------ Ansi C ------------------------ * Add new templates for Unified Automation ANSI C SDK 1.5.1. ------------------------ Bug Fixes ------------------------ ------------------------ .NET ------------------------ * Add suitable error message if code for invalid structured DataTypes is generated. * Minor bug fixes. ------------------------ C++ ------------------------ * Add suitable error message if code for invalid structured DataTypes is generated. * Fixes generating code for EventTypes. If a value for an instance declaration of an EventType was set, the cpp file for the EventType has not been generated. All files for EventTypes are auto- generated now. * Minor bug fixes. ******************************************************************************** ******************************************************************************** ** ** ** Version 1.3.4.293 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ * Fixes completer for EngineeringUnits The completer for entering EngineeringUnits has been disabled. The completer is enabled again now. * Fixes static tree views after model load. If a model has been added to an existing project, the static tree views, like the DataType selection tree view, have not been updated. So nodes of the new model could not be selected. This has been fixed. * Fixes saving project. The project file has been saved after loading the project. The project file is now saved only after changes are made. * Fixes importing XML files with LastModified attribute set. Some XML files provided by the OPC Foundation contain the LastModified attribute in a format which caused the XML schema validator of the UaModeler to report an error although the content of the attribute was valid. This has been fixed. * Minor Bugfixes. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modelling ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Select new node. After a Type or instance is added, the new node will be selected now. * Parent browse keeps context The browser to select the parent of a node keeps the tree view now. * Implement '+' operator for Methods. If a Method is added to a type using the '+' action, the Method including all arguments is copied. ------------------------ Bug Fixes ------------------------ * Fixes DataTypeDictionary The content of DataTypeDictionaries has been wrong if structured DataTypes have been defined having fields with DataType ExpandedNodeId, DataValue, DiagnosticInfo, BaseDataType or Structure. This bug has been fixed. * Fixes value of DataTypeDescription after rename If a structured DataType has been renamed, the value of the DataTypeDescription nodes have not been updated to the new name. This has been fixed. * Fixes NamespaceUri of dictionary. If the NamespaceUri of a model that contains a DataTypeDictionary has been updated, the value of the NamespaceUri property of the dictionary has not been updated. The value is updated to the new URI now. * Fixes adding nodes. If a projects contained more than one user defined model and children have been added to a Type belonging to a model that is not the last model in the project, the new children have been added to last model and not to model of the Type. This has been fixed. * Modifying simple DataType. It was not possible to modify custom simple DataTypes like a subtype of String. This has been fixed. * Aliases for Types. If targets of References have been specified as aliases, the XML importer has not been able to resolve them. This issue only occurred when XML files that have been created by other tools than the UaModeler have been imported. This has been fixed. * Editing of DataTypes of grandchildren If a Variable has been manually added to a child of an ObjectType or VariableType, the DataType of this Variable could not be modified. This has been fixed. * Fixes usage of DataTypes of other models If a DataType has been used in a model that is defined in another model that has not been activated for code generation, the generated code did not compile. DataTypes of other models can be used now even if these models are not activated for code generation. * Fixes deletion of children. Deleting an instance node with children resulted in zombie elements if some of the children have been added to the instance manually. This has been fixed. * Remove redundant xmlns attributes. The exported XML NodeSet2.xml file contained redundant xmlns attributes if values of custom structured DataTypes or own Extensions had been added manually. This redundant information is no longer auto generated. * Minor Bugfixes ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ ------------------------ Ansi C ------------------------ * Add hooks for provider Initialize and Cleanup. Add new file with functions BeforeInitialize, AfterInitialize, BeforeCleanup and AfterCleanup. The functions defined in this file are called by the provider. This file is not overwritten on code generation. ------------------------ .NET Server ------------------------ * Add trial license file for SDK 2.3. The generated code threw an exception if it was used with .NET SDK 2.3 since the format of the license file has been changed. The license file has been updated for the new schema. If .NET SDK 2.1 or 2.2 is used, the license file has to be replaced by a valid one or the license file should not be added. ------------------------ Bug Fixes ------------------------ ------------------------ C++ Server ------------------------ * Fixes double definition of identifiers. If a component of a type was referenced twice using hierarchical references, the identifier for the component was created twice and with an unexpected name. The double definition leaded to compiler warnings. Because of the unexpected name of the identifier in some cases nodes could not be created. This error has been fixes. * Minor bug fixes. ------------------------ .NET Server ------------------------ * Fixes Methods with arrays of ByteString The generated code did not compile for OPC UA Methods having arguments with ValueRank 1 and DataType ByteString. The templates for code generation have been fixed. * Fixes Methods with string arguments. There was a bug for Method arguments with DataType String. If the client passed a Null Variant, which is allowed by the OPC UA Specification, the argument was converted to "(null)". The implementation method has been called with this argument. A check has been added to call the implementation method with null instead of "(null)" if a Null Variant was passed. * Fixes Model class for ObjectTypes having two children. There was a bug for ObjectTypes having two Variables with a complex TypeDefinition as children. If the ValueRank of the second child has been 1, the Model class of the first child was used. The templates for code generation have been fixed. * Fixes Type of child with ValueRank 1. The Type for a child has been wrong in the Model class if the NodeClass of the child has been Variable, TypeDefinition of the child has been complex and the ValueRank has been 1. In this case, the Type of the child has been an Array of the ModelClass instead of the ModelClass as scalar. This has been fixed. * Fixes Values of VariableType with ValueRank 1. For VariableTypes with an abstract DataType and ValueRank 1 the Type of the Value of the VariableType has been generated as "T" instead of "T[]". This has been fixed. * Fix for BrowseNames. If a model contained Nodes with the same symbolic name but different browse names, the generated code did not compile. This has been fixed. * Remove "abstract" keyword from Model classes. If a Type is abstract, the generated Model classes have been defined as abstract. In some OPC UA companion specifications the Types are defined containing children with an abstract TypeDefinition. If one of these Types has been used for LinkModelToNode, LinkModelToNode threw an exception, since the ModelMapper cannot create an instance of an abstract class. The keyword has been removed from the generated code. * Fix for structured DataTypes with fields with DataType Structure. If the DataType of a field of a structured DataType has been set to Structure, the auto generated code did not compile. This has been fixed. * Some more minor bug fixes. ******************************************************************************** ******************************************************************************** ** ** ** Version 1.3.3.285 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modelling ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ * Fixed crash when having references where source and target are the same node. UaModeler crashed when clicking at a node that had a reference to itself. This crash has been fixed. * Fixed crash when creating a value for a structured DataType that does not have fields. This crash occurred if a value having a structured DataType was created and the DataType or one of its parent types did not have fields. This has been fixed. * Fixed crash when deleting a DataType. This crash occurred if a Variable contained a value having a structured DataType and the DataType node was deleted. The crash occurred while saving the model. Deleting a DataType node clears all values of this DataType now. This fixes the crash. * Fixed crash when having loops with HasSubType. UaModeler crashed when there where loops using the HasSubType reference. This crash could only occur when importing XML files created by other tools than the UaModeler, containing such loops. * Fixed crash when using invalid DataTypes for fields. UaModeler crashed when the DataTypes for structure fields were invalid, e.g. an ObjectTypeId was used instead of a DataTypeId. This crash could only occur when importing XML files created by other tools than the UaModeler which used these invalid DataTypeIds. * Fixed saving of method arguments. The namespace index of a DataType of an argument was not saved correctly if the namespace index of the argument was neither 0 nor the namespace index of the current model, and if there was no further relation to the namespace of the DataType, like a reference to a node from this namespace or using a DataType of this namespace as DataType attribute for a Variable. * Fixed context menu of UA nodes. If an existing project was loaded by UaModeler, the Delete action was not shown in the context menu of UA nodes even if it was allowed to delete the node. The context menu of UA nodes is fixed now. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ ------------------------ C++ Server ------------------------ * Support for using types from other custom models. If a model is using types from another custom model, the model must be selected for code generation, too. ------------------------ Ansi C ------------------------ * Support of custom ReferenceTypes. * Support of custom DataTypes. Subtypes built-in simple DataTypes like ByteString or Int32 are supported now. ------------------------ Bug Fixes ------------------------ ------------------------ C++ Server ------------------------ * Created all descriptions for instance nodes. * Fixed using subtypes of DateTime in structures. * Fixed using ReferenceTypes that are defined in other custom models. * Adding super type nodes of custom VariableTypes. The createTypes method of a VariableType did not call the createTypes method of its super type. If this method was not called somewhere else in the code, the type nodes of the custom VariableType were not added, since the super type node was not existent. The createTypes method of a VariableType calls the createTypes method of its super type now. ------------------------ Ansi C ------------------------ * Fixed code generation for multiple models. If more than one model was selected for code generation, the generated code did not compile. ------------------------ .NET Server ------------------------ * Fixed blank strings for BrowseNames that are outside of the current namespace in UpdateEvent method. If an EventType has a child with a BrowseName that has a different BrowseName namespace index than the namespace index of the NodeId of the EventType, empty strings have been generated. A consequence of these empty strings were compiler errors. Now the BrowseNames are generated correctly. ******************************************************************************** ******************************************************************************** ** ** ** Version 1.3.2.273 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ * Fixed highlighting of standard models. In version 1.3.1 all nodes have been highlighted in the address space tree view. Now only user defined nodes are highlighted. * Fixed AddModel dialog. If a model was added to an existing project, the variables from the dialog have not been saved. Now the variables from the dialog will be saved. * Fixed licensing the UaModeler running on linux. In some cases the license dialog did not work correctly due to wrong write permissions, without prompting a warning. The dialog will be started with administrator permissions now. If the license cannot be imported anyway, a warning will be prompted. * Fixed clearing project. The project was cleared when a new project file has been selected even if one of the models was modified. A dialog will be prompted to enable saving or rejecting the changes. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modelling ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ * Fixed namespace in type dictionaries. The namespaces in type dictionaries were not used correctly. If structure fields with data types XmlElement, NodeId, ExpandedNodeId, StatusCode, DiagnosticInfo, LocalizedText, QualifiedName, ExtensionObject, DataValue were used, there could be problems for generic clients. Generic clients based on Unified Automation Client SDK did not have problems with type dictionaries that were generated with the UaModeler 1.3.1. * Fixed crash when having variables with structured DataTypes. The crash occurred when saving a model that contained at least one variable having a structured DataType with a field which specifies an array of another structured DataType. This bug when saving the binary file is fixed now. * Fixed moving nodes to other model. If a node was moved to another model, only one model was saved. Now all affected models will be saved. * Fixes DataType names in type dictionaries. In type dictionaries the names of types and fields have been used instead of the symbolic names. No the symbolic names are used. This only has an effect if names with invalid characters are used such as whitespace or parenthesis. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ ------------------------ Ansi C ------------------------ Support for UnifiedAutomation Ansi C SDK 1.4 * Supports new provider interface. * Supports method handling for Methods having arguments with ValueRank 1. ------------------------ C++ ------------------------ * Added additional methods to Event classes to set the status code for an Event field. * Added static addTypes method to register structured DataTypes at the stack. This method can be called several times but the structured DataTypes are registered only once. * Added option to use the NodeIds from the model instead of creating string NodeIds for instances. ------------------------ Bug Fixes ------------------------ ------------------------ All Languages ------------------------ * Fixed crash for structured DataTypes without fields. There was a crash when generating code for structured DataTypes without having fields. This crash has been fixed. ------------------------ C++ ------------------------ * Use UaDataValues class instead of UaDataValueArray for getters and setters. There have been compiler errors if Variables with DataType DataValue and ValueRank 1 have been used. * Remove member variables for EventTypes. Unused member variables have been generated to EventType classes. ------------------------ .NET Server ------------------------ * Fixed naming of Method implementing classes The names of the Method implementing classes were not correct if the ObjectType name did not end with "Type". In this case method dispatching did not work. The naming of the implementation classes is fixed. ******************************************************************************** ******************************************************************************** ** ** ** Version 1.3.1.264 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Invalid models are not removed from the project automatically. A dialog is added to ask the user whether the model should be removed or the loading of the project should be cancelled. ------------------------ Bug Fixes ------------------------ * Fixes License Check There was a problem with the codec of the imported license file. E.g. the license status was not updated if the UserName contained Umlauts. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modelling ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Updates DI model to Devices 1.01 Companion Specification * Adds tool tips for editing EUInformation ------------------------ Bug Fixes ------------------------ * Fixes crash for structured DataTypes without having fields. The crash occurred if a subtype of a structured DataType that does not have fields was created and the new structured DataType does not have fields, too. * Fixes crash when importing model with incomplete reference. The crash occurred if an XML model was imported that contains a DataType with an incomplete HasSubType reference. The problem only occurred for manually edited XML models or model that are created with other tools than the UaModeler. * Fixes crash when selecting variables with DataType EUInformation or Range. * Fixes importing of invalid internal references. There was a bug in creating models stored in the internal binary format. This bug is fixed and the importer is updated to ignore the invalid internal references contained in the model. * Fixes changing NamespaceURI of model. * Fixes NamespaceIndex of BrowseName of DataTypeEncoding nodes. This bug only occurred when moving a structured DataType to another model. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ ------------------------ C++ ------------------------ * Support for UnifiedAutomation C++ SDK v1.4 Server - Adds implementation class for NodeManager - Adds Constructors needed for XML importer - Adds classes for structured DataTypes * Support for UnifiedAutomation C++ SDK v1.4 Client - Adds classes for structured DataTypes ------------------------ Bug Fixes ------------------------ ------------------------ Ansi C ------------------------ * CMake contains SDK paths now. The generated provider doesn't have to be in a sub-folder of the providers folder of the SDK. * Fixes memory leak for providers with more than one Model. * Use suitable sizes for the hash tables of the address space. ******************************************************************************** ******************************************************************************** ******************************************************************************** ** ** ** Version 1.3.0.242 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * GUI - Automatic check of imported information models - Auto-restore functionality for modified models - Add license dialog - Opening UaModeler after double click on project file for Windows * Modelling - Support for creating values of user defined structures - Support for editing model filenames and namespace uris - Support for sorting structure elements - Enhanced selection of UA types - Support for modifying node ids of DataType nodes * Code Generation - Support for UnifiedAutomation .NET Server SDK v2.1 - Add call-context to generated methods for ANSI C - Option for generating author name and date to the file headers - Add options for generating / overwriting files ------------------------ Bug Fixes ------------------------ * Fix exporting information models to XML ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ General ------------------------ * Option for generating author name and date to the file headers * Add options for generating / overwriting files ------------------------ Ansi C ------------------------ * Update to template version 1.3.0 - Add call-context to generated methods ------------------------ .NET ------------------------ * Initial version of .NET Server templates - Support for UnifiedAutomation .NET Server SDK v2.1 - Generate classes for types - Generate classes for method handling - Generate default application ******************************************************************************** ******************************************************************************** ** ** ** Version 1.2.0.214 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Support for user defined Enumerations * Support for user defined complex DataTypes * Selection dialog for optional children * Support for all NodeId types * Binary format for storing information models * Exporting models to OPC UA standard format (http://opcfoundation.org/UA/2011/03/UANodeSet.xsd) * Consistency Check for models * Removing of unreferenced nodes possible ------------------------ Bug Fixes ------------------------ * Fix usage of optional children of instance declarations * Fix default DataTypes of VariableTypes * Fix setting ValueRank of Instances ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ C++ ------------------------ * Update template version 1.3.1 - Support for UnifiedAutomation C++ SDK v1.3.1 and C++ SDK v1.3.2 - Array Support for Variables - Minor Bugfixes ------------------------ Ansi C ------------------------ * Update to template version 1.3.0 - Support for UnifiedAutomation ANSI C SDK v1.3 - Generate String Tables - Support of String NodeIds - Advance Method calls - Support for complex DataTypes ------------------------ .NET ------------------------ * Initial version of .NET client templates - Support for UnifiedAutomation .NET Client SDK v2.0 - Generate Identifiers - Generate DataType methods ******************************************************************************** ******************************************************************************** ** ** ** Version 1.1.0.184 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Support user defined enumerated data types * Support user defined reference types * Add documentation of the UaModeler * Add "Additional Attributes" tab to set additional attributes of a node * Add new format to save information models * Allow the user to filter the information model for namespaces * Allow the user to set ranges for the node ids of new nodes ------------------------ Bug Fixes ------------------------ * Fix setting default values for type definitions and data types * Fix setting type definitions and data types of overriding nodes * Fix arranging of hierarchical referenced nodes to Children and References tab ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ C++ ------------------------ * Update to template version 1.3.1 - Add enum support - Add reference type support ------------------------ Ansi C ------------------------ * Update to template version 1.0.2 - Add defines for identifiers ******************************************************************************** ******************************************************************************** ** ** ** Version 1.0.1.x ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Highlight user defined nodes in tree view * Assign colors for models in graphics view ------------------------ Bug Fixes ------------------------ * Fix deleting instance declarations - modify all instances of the modified type * Fix delete types - set the type definition of all instances of the deleted type to the super type of the deleted type ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ C++ ------------------------ * Update to template version 1.0.1 - Fix double definition in user defined condition types ------------------------ Ansi C ------------------------ * Update to template version 1.0.1 - Set provider name correctly - Updated initialization of output arguments of methods ******************************************************************************** ******************************************************************************** ** ** ** Version 1.0.0.550 ** ** ** ******************************************************************************** ******************************************************************************** Initial release