******************************************************************************** ******************************************************************************** ******************************************************************************** ** ** ** Version 1.6.7.503 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Show namespace as tooltip in Information Model View. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modeling ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Fixes loading references from XML. In NodeSet2 XML files references can be specified twice. In some of these cases the a reference was added to one node only. Now the references are added to the souce and the target node. Update XML schema for structured DataTypes. The XML schema http://opcfoundation.org/UA/2008/02/Types.xsd has not been updated when updating the model for namespace 0. If there was a value of a structured DataType, that was not present in the used schema, in a NodeSet2 XML file, the schema validation could fail and the model could not be imported. The schema has been updated. Remove HasModellingRule references for DataType properties. In UaModeler 1.6.5 and before HasModellingRule references have been added to properties of DataTypes, e.g. EnumStrings. The ModellingRules are not required here. Now these references are removed on model import. Fixes max depth of a node. In UaModeler 1.6.6 a maximum for the depth of children was added. The specified value was too small for instantiating some complex types. The maximum value has been updated. ******************************************************************************** ******************************************************************************** ******************************************************************************** ** ** ** Version 1.6.6.498 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Improve selection of dependent models. ------------------------ Bug Fixes ------------------------ Fixes saving model enabled state. If a model without changes was published during an XML import, the model could not be saved although it was modified. Now the model can be saved. Fixes cancelling "Save project as". If "Save project as" was called and cancelled, a new project with an empty project name was created. Now the project is not saved. Fixes creating subtype of OptionSet. When clicking at "Add Subtype" at the OptionSet DataType a document for a new structured DataType was opened. Now a new OptionSet DataType can be created. Fixes auto save. For projects with more namespaces than models the auto save function of UaModeler could cause a crash. The auto save functionality is fixed now. Fixes saving after publishing model. If a NodeSet XML file was exported during code generation and the model was published during this export, the model could not be save although it was modified. Now the model can be saved directly after the code generation. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modeling ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Update base model to version 1.05.01. Update DI model to version 1.03.1. Add support for AllowSubtypes in StructureFields. Support is added for modelling DataTypeDefinitions and for editing values of structured DataTypes. Performance optimizations when types are modified. Some performance optimizations have been made when the modifications of a type are applied to the instances of the type. Add OptionSetValues, EnumStrings or EnumValues property on model import if required but missing. Add consitency check for duplicated BrowseNames. Add action to remove children with duplicated BrowseNames. Update node attributes of instances nodes after type changes only if required. Add missing ParentNodeIds. Some modelling tools are setting the ParentNodeIds in an inconsistent way. UaModeler now tries to add missing ParentNodeIds on model import. Performance optimizations when loading binary files. ------------------------ Bug Fixes ------------------------ Fixes XML export of NodeId and QulifiedName within structured DataTypes. If a structured DataType contained a fiel with DataType NodeId or QualifiedName, the NamespaceIndex was not mapped. Now the NamespaceIndex gets mapped. Fixes XML import of QualifiedName within structured DataTypes. The mapping of the NamespaceIndex was not correct for fields with DataType QualifiedName. Now the mapping of the NamespaceIndex is correct. Fixes moving enumerated types to other namespaces. UaModeler crahsed when moving an enumerated DataType to another namespace if the DataType dictionaries have not been existing in the old namespace. Now enumerated DataTypes can be moved to other namespaces. Fixes setting BrowseNames of instances similar to instance declarations with ModellingRule OptionalPlaceholder or MandatoryPlaceholder. If a project contained a model with a type that has children with ModellingRule OptionalPlaceholder or MandatoryPlaceholder and an instance of this type with children representing this instance declaration and a model was added with a lower NamespaceIndex, then the BrowseNames of the instances have been changed. Now the BrowseNames stay unchanged. Fixes setting ModellingRule. In some cases it was not possible to create children of types without a ModellingRule. ModellingRule Mandatory was set implicitly in these cases. Now children without ModellingRule can be created. Fixes TypeName in DataTypeDictionaries. The TypeName of structure fields with abstract structured DataType have been the name of the abstract DataType instead of ExtensionObject. Now the TypeName is ExtensionObject. Fixes XML export for models with types with the same name. If there was a model with a ReferenceType or DataType with the same Name part of the BrowseName than a ReferenceType or DataType from namespace 0, the NodeId in the XML document was not correct if the ReferenceType or DataType from namespace 0 was used. Now the NodeId is correct. Fixes creating values of structured DataTypes. If a structured DataType had a field with ValueRank 1 and a union DataType, UaModeler crashed when creating a value of this DataType when the array length of the field was not 0. Now the value can be created. No Encoding nodes for abstract structured DataTypes. When creating an abstract structured DataType UaModeler added encoding nodes and DataTypeDescription nodes for the DataType. Now only the DataType is created. Fixes XML export values of structured DataTypes. When exporting a value of a structured DataType the BrowseName of the DataType was used for tag within the Body instead of the SymbolicName. If the BrowseName is different from the SymbolicName, the exported XML did not match the schema. Now the SymbolicName is used. Fixes overriding Methods. If a Method was overridden, the Method arguments have not been copied to the overridden Method. Now the Method arguments are copied and disabled. Fixes AccessLevel of placeholders. If a Variable was added via the AddPlaceholder dialog, AccessLevel and AccessLevelEx have not been copied from the instance declaration. Now AccessLevel and AccessLevelEx of the instance declaration are used for the new node. Fixes displaying of placeholder dialog button. If a type has an instance declaration which defines a child A with ModellingRule OptionalPlaceholder or MandatoryPlaceholder and this type is used for an instance declaration of another type, the "Select placeholder components" button was not displayed when selecting the node A from the second type. Now the button is displayed. Fixes moving of Methods. If a Method was moved from an ObjectType to another ObjectType, this change was not applied to the instances of the ObjectType. Now the change is applied to the instances. Fixes setting ModellingRule for DataType Properties. The Properties EnumStrings, EnumValues and OptionSetValues got HasModellingRule references, although they are not required here. Now these nodes do not get these references. Fixes recursion issues with types having children with TypeDefinition set to the type. Fixes displayed ModellingRule. If a child of a type was selected and the child did not have a ModellingRule, e.g. a State of a FiniteStateMachineType, a ModellingRule was displayed in the Types view. Now the correct ModellingRule is displayed. Fixes creating children. If an instance declaration was referenced with ReferenceType Organizes, the similar child was not created when an instance of the type was created. Now the child gets created. Fixes ValueRank check. The consitency check complained about a ValueRank mismatch if the first node to compare had ValueRank Any and the node had another ValueRank. Now this check is fixed. ******************************************************************************** ******************************************************************************** ******************************************************************************** ** ** ** Version 1.6.5.472 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Bug Fixes ------------------------ Fixes setting Project Settings. When Project > Project Settings was called, the Variables for standard models have been deranged. This problem occurred when generating code for C++ or Ansi C. The model Variables are set correctly now. Fixes removing of model. It was possible to remove the namespace 0 from a project. After removing this model the UaModeler project was not usable anymore. Now it is not possible to remove the model Opc.Ua.NodeSet2. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modeling ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Update base models to version 1.04.7. ------------------------ Bug Fixes ------------------------ Fixes crash on changing TypeDefinition. UaModeler crashed when there was an instance of a type that overrided a child of the supertype and the TypeDefinition of that overrided node was changed. Now the TypeDefinition can be changed. Fixes namespace mapping for Values with DataType QualifiedName. When importing an XML file with a Variable with DataType QualifiedName and a defined Value the NamespaceIndex of the value has not been mapped according to the specified NamespaceUris table. If the NamespceIndex in the document was unequal to 0, the resulting NamespaceIndex was not correct. The namespace mapping has been implemented for values with DataType QualifiedName. Fixes saving QualifiedName in bianry format. If a Value of a Variable had DataType QualifiedName the Namespace of the Value was not added to the namespace table if not present. Now the Value is save correctly. Fixes base type of OptionSets in binary dictionary. For subtypes of OptionSet the BaseType in the binary dictionary was ua:ExtensionObject instead of ua:OptionSet. Now the BaseType is set correctly. Fixes enabled state of "Add Placeholder" button. If a node of a locked model was selected and the similar node of the selected node had an instance declaration with modelling rule OptionalPlaceholder or MandatoryPlaceholder, the "Add Placeholder" button was enabled. When new nodes had been added with the dialog the nodes have been added to locked model. Now the button is disabled if the model is locked. Add entries for OptionSets in binary dictionary. Check if supertype exists when loading model. If the supertype of a type did not exist when loading a model, the HasSubtype reference was skipped and the type was not referenced. Now the HasSubtype reference to the non exisiting supertype gets deleted and a HasSubtype reference to a base type is added. Fixes adding and removing model. When a model was removed from or inserted to a project, the model variables like NamespacePrefix of the models with greater namespace index got disordered. After reloading the project the model variables got correct again. Now models can be added or removed without reloading the project. Fixes exporting NaN and INF. The special float and double values NaN and INF did not get exported correctly. The exported XML file could not be validated. Now NaN and INF are exported correctly. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ General ------------------------ Use SymbolicName for DataTypes. When refering to DataType the DisplayName was used instead of the SymbolicName. In most models the SymbolicName and the DisplayName of DataTypes are identical. Now the SymbolicName is used. ------------------------ C++ ------------------------ Add OPCUA_P_WARN_UNUSED_RESULT to CopyTo functions of structured DataTypes. Fixes generated code if values of enumerated DataTypes of Namespace 0 have been used for variables. Use SymbolicName for createType method in instance factory. Fixes code generation for subtypes of OptionSet. Fixes generated includes for ObjectTypes having children with TypeDefinition ConditionClassType. Fixes generated code for subtypes of simple DataTypes. The generated code did not compile if a model contained subtypes of simple DataTypes but neither a custom enumerated DataType nor a custom structured DataType. Add method to get the default XmlUaNodeFactoryNamespace for a namespace. Fixes generated code for method arguments with ValueRank > 0. Only create create to create nodes for children and grandchildren with ModellingRules Optional or Mandatory. Fixes codegeneration for structured DataTypes that have subtypes. Use correct NamespaecIndex for values with DataType QualifiedName. Do not generate default values if ValueRank is neither Scalar nor OneDimension. Fixes generated defines for identifiers for models with invalid usages of the ParentNodeId attribute. ------------------------ ANSI C ------------------------ Add all modelling rules. Fixes method handling for arguments with structured DataTypes having subtypes. Fixes method handling for arguments with abstract DataTypes. Do not generate code for methods with ModellingRule OptionalPlaceholder or MandatoryPlaceholder. Return correct StatusCode if method is not executable. Add special handling for structured DataTYpes without fields. Fixes generating code for Variables with ValueRank 1 where the length of the value array is different from the first entry in the ArrayDimensions attribute. Fixes generated defines for identifiers for models with invalid usages of the ParentNodeId attribute. Fixes generated identifiers for models with invalid usages of the ParentNodeId attribute. ------------------------ .NET ------------------------ Do not generate abstract classes for abstract DataTypes. Fixes usage of subtypes of OptionSet. Add option to generate packages.config. Set the target farmework for .NET Core applications to netcoreapp2.1. ------------------------ HP ------------------------ Add temmplates for SDK 1.5. Fixes generating code with space in output path. The commandline tools xml2c and xml2bin have not been called correctly if the output path contained a whitespace. Now the tools are called correctly. Call xml2c with -P argument. Set default port to 4840. Generate build.sh. Evaluate environment variable SDKDIR to find SDK. Fixes code for calling methods for instances with TypeDefinitions from other namespaces. Use libraries that are generated with xml2c in generated application. Generate gen.sh for manual calling of xml2c. Fixes includes if methods are defined at second layer. Fixes used identifiers for models with invalid usages of the ParentNodeId attribute. Fixes argument check for arguments with ValueRank that is neither Scalar nor OneDimension. ******************************************************************************** ******************************************************************************** ******************************************************************************** ** ** ** Version 1.6.4.458 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modeling ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ Update Opc.Ua.NodeSet2 model to version 1.04.6. Update Opc.Ua.Di.NodeSet2 model to version 1.02.1. Set IsAbstract to 'true' for new EventTypes. The default value of new EventTypes is now set to 'true'. Check DataType, TypeDefinition and ValueRank on import. If a model is loaded, node attributes and references are checked for overrided and similar nodes. For Objects the TypeDefinition is checked, for Variables the TypeDefinition, the DataType and the ValueRank are checked. If there are inconsitencies, an error is printed. Add option to use OPC Foundation model from external location. Print model versions after loading model. ------------------------ Bug Fixes ------------------------ Fixes check for internal references. If a model that is saved in the binary format of UaModeler contains an instance which type is in another namespace and the type has a child with ModellingRule OptionalPlaceholder or MandatoryPlaceholder, there might be an incorrect error message when loading the model. The check that was resposible for incorrect error message got fixed. Fixes adding default children with ModellingRule MandatoryPlaceholder. If an instance was created with a TypeDfinition that has more than one child with ModellingRule MandatoryPlaceholder, not all required children have been created, if other children had the same TypeDefinition but different DataTypes or ValueRanks. Now the correct default children are created. Do not allow subtypes of DataType without concrete encoding. It was possible to create subtypes of BaseDataType, Number, UInteger and Integer in UaModeler. The gui does not allow this now. Imported models are checked for these super types. Allow editing Description attribute for overrided nodes. The Description attribute of nodes that are overridden could only be edited in Additional Attribute tab but not in the Children tab. Now the Description can also be modified in the Children tab. Fixes crash when loading XML file. If a NodeSet2 XML file was loaded with the "Add Existing Model" dialog and the file was not a valid input for UaModeler, UaModeler crashed after rejecting the file. Now UaModeler rejects invalid file. Model not marked as modified. If a structured DataType was modified, the containing model was not marked as modified. The model could not be saved. If other nodes have been modified or added, the model got marked as modified and could be saved. Now the model gets marked as modified after modifying structured DataTypes. Fixes importing LocalizedText from XML. If a NodeSet2 XML file contained a value of a structured DataType where a field has the DataType LocalizedText, the Text field of the LocalizedText in the XML file was set to the Local field of the LocalizedText in UaModeler. Now LocalizedTexts are imported correctly when being a field of a structure. Check ModellingRule when adding great-grandchildren. When an instance of an ObjectType or VariableType was created and a grandchild was optional, one of the children of the optional grandchild was optional and the grandchild and the optional great-grandchild have been selected with the "Add optional components" dialog, the great-grandchild was added twice. If only the grandchild was selected, the great-grandchild was created, too. Now the great-grandchildren are created depending on the selection in the "Set optional components" dialog. Fixes crash on "Apply Type Changes to Instances". If there was a mismatch between the TypeDefinition of an instance declaration and a similiar node, UaModeler could crash when calling "Apply Type Changes to Instances". Now this action is working in the described case. Fixes Add Placeholder Dialog. The Add Placeholder Dialog could be empty in case of nested types with instance declarations with ModellingRule OptionalPlaceholder. Now the dialog shows the correct content. Fixes crash for models without XML dictionaries. UaModeler crashed when a model was loaded with a binary DataTypeDictionary but without an XML DataTypeDictionary and structures have been modified or added. Now it is checked if the XML dictionary exists. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ .NET ------------------------ Add templates for client application. ------------------------ HP ------------------------ Add templates for HP SDK 1.4. ******************************************************************************** ******************************************************************************** ******************************************************************************** ** ** ** Version 1.6.3.454 ** ** ** ******************************************************************************** ******************************************************************************** ------------------------------------------------------------------------------- Graphical user interface ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Show suitable error messages when loading or exporting too large XML files. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Modeling ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ Features ------------------------ * Set ArrayDimensions for Arguments when editing the ValueRank. * Ask for publishing model on XML export. If Export XML is called for a model without an instance of NamespaceMetaDataType, a message box pops up with the question about creating the instance. ------------------------ Bug Fixes ------------------------ * Fixes overriding DataType. It was not possible to change the DataType attribute of an overrided instance declaration. A dialog to select a new DataType can be opened for overrided instance declarations now. * Fixes Placeholder dialog. If an ObjectType references an instance declaration with ModellingRule OptionalPlaceholder or MandatoryPlaceholder with a non-hierarchical reference, the node could be selected in the Add Placeholder dialog. This was not correct since only hierarchically referenced nodes shall be selectable here. Now the ReferenceType is checked. * Fixes ReferenceType for children created with Add Placeholder dialog. Children created with the Add Placeholder dialog have been referenced with ReferenceType HasComponent independent from the ReferenceType that the instance declaration is referenced. Now the correct ReferenceType is used for new children. * Fixes entering placeholder childen. If an instance declaration of an ObjectType defined an own child with ModellingRule OptionalPlaceholder or MandatoryPlaceholder and an instance of this ObjectType was created, the Add Placeholder dialog that could be opened at the child of the instance, was empty. So it was not possible to add grandchildren using this dialog. Now grandchildren can be entered with the dialog. * Fixes loading model if base model got edited. There can be inconsitencies when loading a project containing more than two models. If a model changed in a second project, there can be inconsitencies. The models are checked after the loading them now. * Add missing ParentNodeId. If a child was added to an instance, and a child with the same BrowseName was added to according type after adding the child to the instance, the ParentNodeId was not set at the child of the instance. Now the ParentNodeId is also set if the child of the instance was existing before the according instance declaration. ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Code Generation ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- ------------------------ C++ ------------------------ * Add templates for SDK 1.7 * Fixes creating of optional grand children of ObjectTypes. * Fixes including NodeManagers for targets of nonhierarchical references. * Fixes including NodeManagers for used ReferenceTypes. * Fixes define for event field which name is upper case. * Generate code for simple DataTypes. * Fixes generating non hierarchical references between instances. ------------------------ .NET ------------------------ * Add templates for SDK 3.0 * Use corrent namespace for DataContract of structures. ------------------------ ANSI C ------------------------ * Add templates for SDK 1.9 * Fixes mapping of namespaces for event fields. * Add ModifyItem functionality * Add switch for creating DataTypeDictionaries ------------------------ HP ------------------------ * Add templates for SDK 1.3 ******************************************************************************** ******************************************************************************** ******************************************************************************** ** ** ** 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 generating 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 abstarct 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