2.5 引用外部文档 Referencing external documents
AutomationML提供了引用外部文件的机制,例如几何文件、逻辑信息或其他文件。引用机制是灵活的,利用标准的AML接口ExternalDataConnector或其派生接口之一。图2-69说明了一般的机制:AML对象通过一个外部接口来引用外部文件。
2.5.1 引用COLLADA和行为文件 Referencing COLLADA and behaviour documents
对COLLADA文件的引用是基于AML标准接口类COLLADAInterface或其派生类之一的模型。该类在第 2.4.3.6节中规定,关于建模的细节在本书的第3.2节中规定。
本书第4章描述了对行为文件的引用。PLCopen XML文档是基于AML标准接口类PLCopenXMLInterface或其派生类之一而建模的。这个类在2.4.3.7中规定。
2.5.2 引用外部CAEX文件 Referencing external CAEX documents
2.5.2.1 如何对外部CAEX文件的引用进行建模 How to model references to external CAEX documents
CAEX文档可以被分割成几个文档,并且可以引用外部CAEX文档。
分布式文档实际上可以理解为一个共同的对象模型,在几个CAEX文档中进行序列化。
这对许多使用情况是有用的,例如,当一个对象模型变得太大,或用于外包库,或当几个合作伙伴在对象模型的不同部分工作,或用于知识保护。
分割CAEX文档的建模规则是:
- 对外部CAEX文档的引用是通过CAEX元素 ExternalReference(见2.2.3.1节)来建模的。
- 所有被引用的CAEX文档必须是相同的CAEX模式版本。
- 被引用的外部CAEX文档必须是有效的和可访问的。
- 每个CAEX外部引用必须提供一个指向外部CAEX文档的有效URI和一个在CAEX文档中必须是唯一的别名。别名是外部文档的内部标识符。
- 例如,别名可用于引用类或实例。在这种情况下,引用标签以别名名称开始,后面是别名分隔符"@",然后是引用的类的路径或引用的InternalElement或ExternalInterface的ID。
- CAEX InternalLinks或镜像对象可以引用存储在另一个文件中的镜像对象。在这种情况下,外部文件被引用为ExternalReference。
- 在所有分割的文件中,允许对同一文件的ExternalReference的多次出现。CAEX文件之间的循环引用是允许的。这意味着一个CAEX文件可以引用另一个CAEX文件,但同一个文件的分割文件可以再次引用同一个CAEX文件。
Fig. 2-70 说明了一个对象模型在多个文件中的分布。CAEX根文件引用其他三个文件CAEXFile01、CAEXFile02和CAEXLibrary
2.5.2.2 例子 Example
图2-71通过一个外部文件myExternalLibrary.aml说明了CAEX ExternalReferences的建模情况。别名是myExternalLibrary,引用的路径是相对的。
外部文件的路径遵循URI惯例。
- 它可能只是文件名,路径被假定为与引用的CAEX文件的路径相同。
- 它可以是一个相对于原始路径的路径,
- 也可以是一个绝对路径(我们不推荐这样做)。
- 它还可以是一个网站或ftp服务器的路径,等等。
最后,引用应该解决文件的位置,它相当于把文件存储在云端或本地服务器的某个地方。示例路径有:。
– myExternalLibrary
– …/ExternalFiles/ProductLibrary.aml
– File://localhost/c:/Temp/ExternalCAEXFile01.aml
– http://www.abc.com/ExternalCAEXFile02.aml
图 2-72 显示了如何使用别名:在这个例子中,内部元素 mySensor01 引用了 mySensor 类,该类存储在外部 CAEX 文档中,别名为 myExternalLibrary。标签RefBaseSystemUnitPath为路径建模,以别名开始,后面是别名分隔符@和对应类的完整路径。
2.5.3 引用未来AML范围内的外部文件 Referencing future external documents in the scope of AML
AutomationML的未来扩展可能会增加额外的接口类型,以引用更多的文件类型。它们将在AutomationML标准系列的单独部分中指定。这种扩展的建模规则是:
- 对其他文件的额外引用必须用额外的接口类来建模,并且必须直接或间接地从标准接口类ExternalDataConnector派生。
- 引用的存储应该重复使用标准接口类所提供的现有标准属性。
2.5.4 引用AML范围之外的其他文件 Referencing additional documents outside the scope of AML
2.5.4.1 建模规则 Modelling rules
AutomationML支持对外部文件的引用,这些文件不在本标准的范围内,例如,手册、证书、图标、说明或特定的工程成果,如本地控制程序。建模规则是:
- 不属于IEC 62714标准范围的文件必须通过CAEX InternalElement来建模。这个InternalElement必须与RoleClass ExternalData有直接或间接的联系(见2.4.2.11节)。被引用的角色必须指定文件的内容类型,例如 "物料清单 bill of material"或 “用户手册 user manual”。可以为一个文件分配一个以上具有不同内容类型的角色;例如,如果该文件包含几种类型的内容,例如 "材料清单 "和 “用户手册”。
- 如果有必要,每个文档可以引用几个文件,例如,如果它被分割成不同的文件。
- 文档对象通过一个或多个必须直接或间接地从接口类ExternalDataReference派生的ExternalInterfaces来模拟对外部文档的引用。
- 这个ExternalInterface必须通过继承自AML标准接口类ExternalDataConnector的预定义CAEX属性(类型为refURI)对外部文档的URI进行建模,并且必须通过预先定义的、从AML标准接口类ExternalDataReference 继承的MIMEType类型的CAEX属性来模拟该文档的类型。
- 如果一个文件是特定的语言,它必须包含一个类型为DocLang的CAEX属性。如果一个文件包含一种以上的语言,它应包含一个未经排序的属性列表,其属性类型为DocLang。
2.5.4.2 单个外部MS Excel文件的例子 Example for a single external MS Excel document
让我们假设我们想为一个与设备对象相关的MS Excel文档建模。图2-73说明了建模的步骤。
- 模型的起点是一个为设备建模的InternalElement。
- 创建一个CAEX InternalElement作为设备对象的子元素,并将角色ExternalData关联到此。
- 为这个文件分配一个CAEX ExternalInterface,它来自ExternalDataReference。
- 设置引用的属性:refURI是文档的路径(在本例中是specification.xlsx),并设置MIMEType(在本例中是application/msex- cel)。
- 可以选择:给文档分配一个DocLang类型的属性并定义语言。
图2-73显示了AML编辑器中的建模步骤。
图2-74显示了产生的XML结构,说明了建模的细节。
2.5.4.3 多个外部文件的例子 Example for multiple external documents
让我们假设我们想为一个工具的AML对象建模,该对象需要引用三个不同的文档:
- 一个PDF格式的德语用户指南,
- 一个PDF格式的德语材料清单和
- 一个MS Word文档的英语材料清单。
图2-75说明了我们想要的东西:
建模的步骤是:
- 第1步:我们定义一个新的角色类库,并添加额外的文档类型,在本例中是UserManual和BillOfMaterial,源自AML标准角色ExternalData。更多的文档类型可以根据需要添加(见图2-76)。
- 第2步:我们在InstanceHierarchy中将该工具建模为CAEX InternalElement。
- 第3步:我们添加三个子InternalElements,分别扮演所需的文档角色。每个InternalElements都有一个属性amlDocLang,它是所需语言的模型。
- 第4步:对于每个文档链接,属性refURI和MIMEType被设置。
由此产生的AML文件可以在[BookLink@]下载。进一步的例子在[BPR EDRef@]中提供。
2.5.5 引用CAEX属性到外部文件的项目上 Referencing CAEX attributes to items in external documents
2.5.5.1 Modelling rules
有时,将一个CAEX属性与外部文档中的相关项目(例如AutomationML标准范围之外的外部Excel文档)联系起来可能是有用的。这方面的建模规则是:
- 如第2.5.4节所述,CAEX属性和外部文档中的项目之间的每个引用都由一个CAEX ExternalInterface建模。
- 对于CAEX属性和外部文档中的项目之间的每个引用,这个CAEX ExternalInterface为一个额外的AssociatedExternalValue类型的属性建模,它有三个嵌套属性。
- RefCAEXAttribute。第一个嵌套属性RefAttributeType反映了CAEX属性。这意味着属性的父对象的ID,用"/"分开,属性的名称被模拟成这个属性的值。这个属性的名称是不相关的,但在其同级对象中是唯一的。
- refURI。第二个嵌套的refURI类型的属性引用外部文档中的项目。这个引用必须引用与父级InternalElement中引用的外部文档相同的文档或其子文档。这个引用的语法超出了AutomationML的范围,需要一个可引用的外部文档元素,例如EXCEL的别名。
别名。 - Direction。方向类型的第三个嵌套属性对信息流的方向进行建模。如果外部属性被CAEX属性消耗(那么外部项目是领先的),则属性值为In;如果CAEX属性是领先的,并且外部项目消耗了CAEX属性的值,则属性值为Out。InOut的值是不允许的。
2.5.5.2 Example
让我们假设我们想扩展以前的模型。该设备应该有一个attribute Price,它应该与一个外部的MS Excel文件相连接。图2-78说明了建模的步骤:
- 为设备对象添加一个CAEX属性Price。
- 在参考界面上添加一个类型为AssociatedExternalValue的CAEX属性。
- 将第一个嵌套属性refCAEXAttribute的值设置为CAEX属性的路径(在这个例子中,7468c3d4-9052-4d11-8de4-a8a6576b3d33/Price)。
- 将第二个嵌套属性refURI的值设置为外部文档(在这个例子中, Specification.xlsx#DevicePrice)。语法是用户定义的。
- 将第三个嵌套属性Direction的值设置为In,因为外部文档是该属性内容的主要来源。