├── README.md ├── RELEASE_NOTES.md ├── images ├── aastype.jpg ├── assettype.jpg ├── concepts.jpg ├── filetype.jpg ├── referenceelement.jpg ├── referencetypes.jpg ├── relationshipElementType.jpg ├── structures.jpg ├── structures2.jpg ├── submodelcollection.jpg ├── submodelelementtype.jpg ├── submodeltype.jpg └── viewtype.jpg └── models ├── coreAAS.tt2pro ├── coreaas.bsd ├── coreaas.ua ├── coreaas.xml └── coreaas.xsd /README.md: -------------------------------------------------------------------------------- 1 | CoreAAS 2 | ======= 3 | This project is an implementation of the Platform Industrie 4.0 Asset Administration Shell (AAS) metamodel in OPC UA. It defines an open Information Model defining the main parts of the AAS metamodel. This Information is based on the version 2.1 of the AAS metamodel. 4 | 5 | The project is still work in progress and all the main components already defined will be tracked in the table at the end of this document. 6 | 7 | CoreAAS is implemented in [node-opcua-coreaas](https://github.com/OPCUAUniCT/node-opcua-coreaas), an extension of the OPC UA SDK for Node.js [node-opcua](https://github.com/node-opcua/node-opcua). 8 | 9 | ## Overview 10 | For Industrie 4.0, an asset is any "object which has a value for an organization". Thus,assets in Industrie 4.0 can take almost any form, for example be a production system, a product, a software installation, intellectual properties or even human resources. 11 | 12 | Assets shall have a logical representation in the "information world", for example shall be managed by IT-systems. Thus, an asset has to be precisely identified as an entity, shall have a "specific state within its life (at least a type or instance)", shall have communication capabilities, shall be represented by means of information and shall be able to provide technical functionality. This logical representation of an asset is called Administration Shell. The combination of asset and Administration Shell forms the so-called I4.0 Component. 13 | 14 | You can look into metamodel using software like [UAModeler](https://www.unified-automation.com/products/development-tools/uamodeler.html) from Unified Automation GmbH. The xml file in models folder can be easily imported in every OPC UA SDK allowing information model xml file to be imported. 15 | 16 | More information are available on the [wiki](https://github.com/OPCUAUniCT/coreAAS/wiki). 17 | 18 | An implementation of CoreAAS is available [here](https://github.com/OPCUAUniCT/node-opcua-coreaas). It is an extension for [node-opcua](https://github.com/node-opcua/node-opcua), an OPC UA Stack for Node.js. 19 | 20 | --- 21 | 22 | The foundation of coreAAS is the AAS metamodel defined in [this](https://www.plattform-i40.de/PI40/Redaktion/DE/Downloads/Publikation/Details-of-the-Asset-Administration-Shell-Part1.html) document. 23 | 24 | ## AAS metamodel entities tracking 25 | The following table shows which AAS metamodel entities are already mapped in coreAAS metamodel. 26 | 27 | Status legend: 28 | Implementation complete :white_check_mark: 29 | 30 | Not implemented :x: 31 | 32 | Under construction :construction: 33 | 34 | Unstable (incomplete or bugged) :warning: 35 | 36 | | AAS Metamodel Entity | Status | 37 | | ------------- | ------------- | 38 | | AssetAdministrationShell | :white_check_mark: | 39 | | Asset | :white_check_mark: | 40 | | Submodel | :white_check_mark: | 41 | | SubmodelElement | :white_check_mark: | 42 | | DataElement | :white_check_mark: | 43 | | Property | :white_check_mark: | 44 | | MultiLanguageProperty | :x: | 45 | | Range | :white_check_mark: | 46 | | File | :white_check_mark: | 47 | | Blob | :x: | 48 | | ReferenceElement | :white_check_mark: | 49 | | Capability | :white_check_mark: | 50 | | SubmodelElementCollection | :white_check_mark: | 51 | | RelationshipElement | :white_check_mark: | 52 | | Operation | :x: | 53 | | OperationVariable | :x: | 54 | | Event | :x: | 55 | | Entity | :white_check_mark: | 56 | | View | :white_check_mark: | 57 | | ConceptDictionary | :white_check_mark: | 58 | | ConceptDescription | :white_check_mark: | 59 | | Reference | :white_check_mark: | 60 | | Key | :white_check_mark: | 61 | | DataSpecification | :white_check_mark: | 62 | | DataSpecificationContent | :white_check_mark: | 63 | | DataSpecificationIEC61360 | :white_check_mark: | 64 | -------------------------------------------------------------------------------- /RELEASE_NOTES.md: -------------------------------------------------------------------------------- 1 | # **Version 0.2.1** 2 | 3 | ## New ReferenceType 4 | - Created a new Non Hierarchical ReferenceType named "ContainsElement" for ViewType in order to reference the element indicated by ContainedElements 5 | 6 | ## ViewType 7 | - Fixed ViewType in order to contain AASReferenceType instances by means of Organizes References in the ContainedElements Folder. 8 | 9 | # **Version 0.2.0** 10 | 11 | ## New ObjectTypes 12 | - Created **ViewType** to map View. Views are used to group Referable entities under an AAS. 13 | - Created **SubmodelElementCollectionType** to map SubmodelElementCollection. It is a subtype of SubmodelElementType; 14 | - Created **ReferenceElementType** to map ReferenceElementType. It is a subtype of DataElementType; 15 | - Created **FileType** to map File. It is a subtype of DataElementType; 16 | 17 | ## AASType 18 | - Added a new component named **asset** which is an AASReferenceType; 19 | - Since _HasAsset_ is now a NonHierarchical ReferenceType, the InstanceDeclaration related to this Reference disappears from the type. But _HasAsset_ is still used to connect an AASType instance to its AssetType instance. 20 | - Added a component **Views** which is a FolderType used to aggregate Views of the AAS. 21 | 22 | ## SubmodelType 23 | - Added the component **parent** which is an AASReferenceType; 24 | - **semanticId** now is referenced by an HasComponent Reference instead of an HasSemantic ReferenceType; 25 | 26 | ## SubmodelElementType 27 | - **semanticId** now is referenced by an HasComponent Reference instead of an HasSemantic ReferenceType; 28 | 29 | ## ConceptDictionary 30 | - Added a folder **ConceptDescriptions** to organize AASReferenceType instances targeting Conceptdescription; 31 | - The component **category** has been removed; 32 | 33 | ## DataSpecificationIEC61360Type 34 | - New UA Properties has been defined in order to describe AAS Property on the basis of IEC 61360 attributes. Now an instance of this ObjectType features the following properties: 35 | 36 | | UA Property/Component BrowseName (*=mandatory) | UA DataType or ObjectType | 37 | -----------------|---------------- 38 | |**identifier***| String| 39 | |**preferredName***| String| 40 | |**definition***|String| 41 | |**dataType***|String| 42 | |**unit**|String| 43 | |**unitId**|AASReferenceType| 44 | |**iecCategory**|String| 45 | |**iecLanguageCode**|String| 46 | |**note**|String| 47 | |**shortName**|String| 48 | |**valueFormat**|String| 49 | |**version**|String| 50 | |**revision**|String| 51 | 52 | ## ReferenceTypes 53 | - **HasAsset** now is NonHierarchical; 54 | - New NonHierarchical ReferenceType named **HasSubmodel** to connect AASType instances to SubmodelType instances; 55 | - **HasSemantic** now is NonHierarchical and replaces **HasLocalSemantic**; 56 | - **HasSubmodelSemantic** is now NonHierarchical and it is subtype of HasSemantic; 57 | - **IsDerivedFrom** now is NonHierarchical and replaces **IsLocalDerivedFrom**; 58 | - New NonHierarchical ReferenceType named **HasAssetIdentificationModel** to connect AssetType instances to the SubmodelType instance relevant the identification of the Asset. It is subtype of HasSubmodel; 59 | - Removed **IsLocalCaseOf** since there is no useful use case for this referenceType; 60 | 61 | ## General fixes 62 | - The DataType attribute of all **description** UA Properties has been changed to _LocalizedText_ and the ValueRank attribute has been changed to _OneDimension_. In other word now **description** Property is an Array of LocalizedText; 63 | - In **AASReferenceType**, the BrowseName of UA Property **key** has been changed to **keys**; -------------------------------------------------------------------------------- /images/aastype.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OPCUAUniCT/coreAAS/5b1fc707e69f68d4dcb8ba73508dbeb8554c580e/images/aastype.jpg -------------------------------------------------------------------------------- /images/assettype.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OPCUAUniCT/coreAAS/5b1fc707e69f68d4dcb8ba73508dbeb8554c580e/images/assettype.jpg -------------------------------------------------------------------------------- /images/concepts.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OPCUAUniCT/coreAAS/5b1fc707e69f68d4dcb8ba73508dbeb8554c580e/images/concepts.jpg -------------------------------------------------------------------------------- /images/filetype.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OPCUAUniCT/coreAAS/5b1fc707e69f68d4dcb8ba73508dbeb8554c580e/images/filetype.jpg -------------------------------------------------------------------------------- /images/referenceelement.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OPCUAUniCT/coreAAS/5b1fc707e69f68d4dcb8ba73508dbeb8554c580e/images/referenceelement.jpg -------------------------------------------------------------------------------- /images/referencetypes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OPCUAUniCT/coreAAS/5b1fc707e69f68d4dcb8ba73508dbeb8554c580e/images/referencetypes.jpg -------------------------------------------------------------------------------- /images/relationshipElementType.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OPCUAUniCT/coreAAS/5b1fc707e69f68d4dcb8ba73508dbeb8554c580e/images/relationshipElementType.jpg -------------------------------------------------------------------------------- /images/structures.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OPCUAUniCT/coreAAS/5b1fc707e69f68d4dcb8ba73508dbeb8554c580e/images/structures.jpg -------------------------------------------------------------------------------- /images/structures2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OPCUAUniCT/coreAAS/5b1fc707e69f68d4dcb8ba73508dbeb8554c580e/images/structures2.jpg -------------------------------------------------------------------------------- /images/submodelcollection.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OPCUAUniCT/coreAAS/5b1fc707e69f68d4dcb8ba73508dbeb8554c580e/images/submodelcollection.jpg -------------------------------------------------------------------------------- /images/submodelelementtype.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OPCUAUniCT/coreAAS/5b1fc707e69f68d4dcb8ba73508dbeb8554c580e/images/submodelelementtype.jpg -------------------------------------------------------------------------------- /images/submodeltype.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OPCUAUniCT/coreAAS/5b1fc707e69f68d4dcb8ba73508dbeb8554c580e/images/submodeltype.jpg -------------------------------------------------------------------------------- /images/viewtype.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OPCUAUniCT/coreAAS/5b1fc707e69f68d4dcb8ba73508dbeb8554c580e/images/viewtype.jpg -------------------------------------------------------------------------------- /models/coreAAS.tt2pro: -------------------------------------------------------------------------------- 1 | ########################### 2 | # UaModeler Project File # 3 | # Generated at 21.10.2020 # 4 | ########################### 5 | 6 | PROJECTNAME = coreAAS 7 | 8 | TEMPLATESET = ($TEMPLATES)/modeling/v1_0/t0/modeling.tt2set 9 | 10 | MODELS += ($MODELS)/Opc.Ua.NodeSet2.ua \ 11 | coreaas.ua 12 | 13 | COLORS = ($MODELS)/Opc.Ua.NodeSet2.ua: #0000ff\ 14 | coreaas.ua: #008000 15 | 16 | OUTPUTPATH = ../../../../ 17 | 18 | GENERATE += coreaas.ua 19 | 20 | NODEACCESSINFOROLES += Administrator \ 21 | SecurityAdmin \ 22 | ConfigurationAdmin \ 23 | Operator \ 24 | Observer 25 | 26 | -------------------------------------------------------------------------------- /models/coreaas.bsd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OPCUAUniCT/coreAAS/5b1fc707e69f68d4dcb8ba73508dbeb8554c580e/models/coreaas.bsd -------------------------------------------------------------------------------- /models/coreaas.ua: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OPCUAUniCT/coreAAS/5b1fc707e69f68d4dcb8ba73508dbeb8554c580e/models/coreaas.ua -------------------------------------------------------------------------------- /models/coreaas.xsd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OPCUAUniCT/coreAAS/5b1fc707e69f68d4dcb8ba73508dbeb8554c580e/models/coreaas.xsd --------------------------------------------------------------------------------