本文档来自于官方文档,原文请查看官网
5. System Structure Description (SSD)
System Structure Description (SSD) 即系统结构的描述,定义了一个嵌套的层次结构
,由子系统与不可分的组件构成,而子系统又可以由其它子系统或组件构成。
- 这个描述被定义在
.ssd
的文件中; - 该文件格式为
XML 1.0
,符合本标准定义的SystemStructureDescription.xsd
文件描述的格式。 - 编码为
UTF-8
;
5.1 SystemStructureDescription
- SystemStructureDescription:描述了系统层次的整体信息,作为文档的根标签,包括常见的元数据、单位和枚举定义。
- 通用属性
- version:类型为xs:normalizedString;本规范的版本,不包括补丁的版本号;当前版本为1.0-RC1
- name:类型为xs:string;表示系统的名称,便于其他ssd文件的引用
- ssc:ABseElement 定义在ssc中
- ssc:ATopLevelMetaData 定义在ssc中
- 子标签
- Enumerations 定义在ssc中;包含了系统描述相关的枚举,详见4.4.1
- Units 定义在ssc中;包含了系统描述相关的单位,详见4.4.2
- Annotations 定义在ssc中
- System :指定模型的总系统结构,详见5.3
- DefaultExperiment
- 通用属性
5.1.1 默认实验配置(Default Experiment)
DefaultExperiment 包含了默认的仿真设置,与系统定义一起提供。与FMI 2.0相比,这里只指定了startTime
和 stopTime
参数,因为像步长或公差这样的值取决于所采用的具体求解器或主算法,因此没有在这个全局元素中指定。
从FMI 2.0开始,FMU的自变量单位默认为秒,但是其他单位可以通过自定义自变量来指定。本标准没有规定如何处理不同的自变量单位,而是将此留给协议的实现人。
5.2 通用的模型元素类型
System, Component 与 SignalDictionaryReference相关xml元素拥有着通用的Element对象 TElement
,包含了所有模型Element公有的属性与Element。
以下是为TElement类型指定的XML属性:
- name:定义了模型元素的名称,用于在父系统中识别模型元素;该名称在父系统中是唯一的,且不为空字符串
以下是为TElement类型指定的XML子元素:
- Connectors(可选):指定了这个模型元素的
Connector
集合,代表了模型元素与外部系统的接口;详见下文。 - ElementGeometry(可选):定义了组件的几何信息;详见下文。
- ParameterBindings(可选):指定了模型元素绑定参数的集合
5.2.1 Connectors
Connectors元素
指定了这个模型元素的连接器 (Connector)集合,代表了模型元素与外部系统的接口。对于组件来说,连接器必须与底层组件实现的变量/端口相匹配;例如被引用FMU的名称。
注意,没有要求必须定义连接器关联所有底层组件实现的变量/端口;但至少在SSD内部的连接中被引用的连接器必须存在。未被引用的连接器将使用为底层组件变量/端口指定的行为。例如,未连接的FMU输入变量将在整个模拟过程中使用其默认值;对于没有通过连接器引用的变量/端口也是如此。
Connector element存在以下XML属性:
- name:表示连接器名称。在给定的模型元素中必须是唯一的,;且对于组件来说,必须与底层组件实现中的相关变量/端口的名字相匹配。
- kind:指定给定连接器的类型。
- 可选类型如下:
- input
- output
- parameter
- calculated parameter:在初始化过程中参与计算的参数
- 对于
组件
来说,必须与底层组件实现的相关类型相匹配;对于被引用的FMU来说,它必须有适合的variability 与causality 组合。对于FMI 2.0来说,这意味着变量的causality类型必须与连接器的类型相匹配(对于FMI 2.0或1.0来说,inout的类型是无效的)。- 对于FMI 1.0来说,这意味着:- 对于 input 或 output 类型的连接器,变量的variability属性必须是input或output。变量的causality 属性必须是 discrete 或者 continuous (output 类型也可以是 constant 或者 parameter)。
- 对于 parameter 类型的连接器,FMI 1.0变量的causality 属性必须是input 或 internal ,variability属性必须是parameter。
- 对于calculatedParameter 类型的连接器,FMI 1.0变量的causality 属性必须是output ,并且variability属性必须是parameter。
- 对于
SignalDictionaryReference
来说,给定的连接器的种类可以是inout,这表明连接器的语义来自于通往该连接器的连接;允许一个连接器在同一个SignaleDictionaryReference中既作为input 又作为output。
- 可选类型如下:
以下是为Connector元素指定的XML子元素:
element | 描述 |
---|---|
Real / Integer / Boolean / String / Enumeration / Binary | 这些元素中必须有一个确切的元素来指定Connector元素的类型 |
ConnectorGeometry | (可选)定义了Connector元素的几何信息 |
Connector元素的类型由XML子元素Real、Integer、Boolean、String、Enumeration或Binary其中之一来定义。
5.2.1.1. ConnectorGeometry
这个可选的XML元素给出了连接器的几何信息。注意,x和y坐标是在一个特殊的坐标系中,其中0,0是包含模型元素的左下角,1,1是模型元素的右上角,与长宽比无关。
对于系统内部和外部视图来说,连接器的位置是相同的;特殊坐标系只是被转换为不同的实际坐标系,即外部视图是由ElementGeometry定义的坐标系,以及内部视图是由SystemGeometry定义的坐标系。
属性 | 描述 |
---|---|
x | 必要的属性,给出连接器在特殊坐标系中的X坐标。 |
y | 必要的属性,给出连接器在特殊坐标系中的Y坐标。 |
5.2.2 ElementGeometry
这个可选的XML元素定义了模型元素的几何信息,其中(x1,y1)和(x2,y2)定义了模型元素的左下角和右上角在其父系统的坐标系中的位置。如果x1>x2这表示水平翻转,y1>y2表示垂直翻转。
属性 | 描述 |
---|---|
x1 | 必要属性,给出模型元素在其父系统坐标系 内的左下角的X坐标。 |
y1 | 必要属性,给出模型元素在其父系统坐标系 内的左下角的Y坐标。 |
x2 | 必要属性,给出模型元素在其父系统坐标系 内的右上角的X坐标。 |
y2 | 必要属性,给出模型元素在其父系统坐标系 内的右上角的Y坐标。 |
rotation | 可选属性,定义了一个额外的旋转,单位是度,在任何翻转之后都要应用,其中正数表示左旋(x→y)。 |
iconSource | 可选属性,定义了一个图标URI,其语义与组件元素的source 属性相同。如果定义了这个图标,这个图标就会覆盖任何可能在.fmu文件中定义的图标(如相关的FMI标准所规定的)。建议支持图形演示的实现至少支持PNG和SVG文件格式的图标。 |
iconRotation | 可选属性,定义了icon的旋转角度,其中正数表示左旋(x→y)。 |
iconFlip | 可选属性,定义了由(x1,y1)、(x2,y2)表示的任何翻转是否也应适用于icon。 |
iconFixedAspectRatio | 可选的属性,为true 时表示icon 应适合于(x1,y1)、(x2,y2)所定义的范围,并有一个固定的长宽比;为false时表示不保持固定的长宽比。 |
相关实例
以下的例子展示了ElementGeometry
属性对相关元素视觉表现的影响:
实例一
- flip (x1<x2, y1<y2)
- rotation=0
- iconRotation=0
- iconFixedAspectRatio=true
- iconFlip=IGNORED
实例二
- flip (x1<x2, y1<y2)
- rotation=0
- iconRotation=0
iconFixedAspectRatio=false
- iconFlip=IGNORED
实例三
- flip (x1<x2, y1<y2)
rotation=ϕ
iconRotation=ϕ
- iconFixedAspectRatio=true
- iconFlip=IGNORED
实例四
- flip (x1<x2, y1<y2)
rotation=ϕ
iconRotation=ϕ
iconFixedAspectRatio=false
- iconFlip=IGNORED
实例五
- flip (x1<x2, y1<y2)
rotation=ϕ
- iconRotation=0
- iconFixedAspectRatio=true
- iconFlip=IGNORED
实例六
- flip (x1<x2, y1<y2)
rotation=ϕ
- iconRotation=0
- iconFixedAspectRatio=false
- iconFlip=IGNORED
实例七
flip (x1>x2)
rotation=ϕ
iconRotation=ϕ
iconFixedAspectRatio=true
iconFlip=true
实例八
flip (x1>x2)
rotation=ϕ
iconRotation=ϕ
- iconFixedAspectRatio=false
- iconFlip=false
实例九
flip (x1>x2)
rotation=ϕ
iconRotation=ϕ
iconFixedAspectRatio=true
- iconFlip=false
实例十
flip (y1>y2)
- rotation=0
- iconRotation=0
iconFixedAspectRatio=true
- iconFlip=false
实例十一
flip (x1>x2, y1>y2)
- rotation=0
- iconRotation=0
iconFixedAspectRatio=true
- iconFlip=false
实例十二
flip (x1>x2, y1>y2)
- rotation=0
- iconRotation=0
iconFixedAspectRatio=true
iconFlip=true
实例十三
flip (x1>x2, y1>y2)
rotation=ϕ
iconRotation=ϕ
iconFixedAspectRatio=true
iconFlip=true
实例十四
flip (x1>x2, y1>y2)
rotation=ϕ
iconRotation=ϕ
- iconFixedAspectRatio=false
iconFlip=true
实例十五
flip (x1>x2, y1>y2)
rotation=ϕ
iconRotation=ϕ
iconFixedAspectRatio=true
- iconFlip=false
5.2.3 ParameterBindings
ParameterBindings
元素为一个组件或系统提供参数绑定,每个绑定都在ParameterBinding
元素中指定。ParameterBindings
元素应用一组参数值(一个参数集),由参数源(例如:parameter 文件)提供,用于参数化组件或系统。
- 对于FMU组件来说,允许对FMU的参数和其他变量的初始值进行参数化;
- 对于系统来说,允许使用分层命名方案对子系统和组件的所有层级进行参数化。
当没有指定参数映射 作为绑定的一部分时,参数源提供的所有参数值将使用其原名 进行配置。如果在系统中找到该参数名 ,则应用该参数值;否则该参数值将被忽略 。当参数映射 被指定为绑定的一部分时,那么只有映射的参数值被应用,使用它们映射到的名字。在这种情况下,非映射的参数值不会被应用。
- 对于FMU组件来说,参数值是根据FMU中的变量名设置FMU变量的;即不要求(但允许)这些变量在系统描述中以连接器(connector)的形式被引用;
- 对于系统来说,参数值用于系统中的参数或其他变量的层次名称。
一个系统的参数或其他变量的层次名称是以下方式组成的:
- 任何通过系统的connector暴露出来的系统变量,都以连接名作为其名称;
- 对于系统的所有元素来说,元素变量的层次名称是由
层次名.元素名
组成。
【例如,系统A 包含系统B ,该系统B包含参数SP1 、元素C(包含参数P2 ),系统A中参数的层次名称分别为:B.SP1
和B.C.P2
。系统B中这些参数的层次名称分别是SP1和C.P2。】
请注意,参数或其他变量的层次名称不一定是唯一的。如果两个或更多的变量最终具有相同的层次名称,那么任何应用于该名称的参数值都必须应用于所有的变量。如果不希望这样,那么就要由生成者通过正确选择系统和元素名称来确保不发生双关现象。
【例如,系统A包含系统B
与组件B.C
,组件B.C
包含变量D;系统B包含组件C,组件C包含变量D;这两个变量都具有A.B.C.D
的层次名称。如果不希望出现这种情况,那么在命名组件B.C和系统B/组件C时应该适当注意,不要出现冲突。该标准允许这种双关语,因为在系统或组件的名称中能够有一个.
;例如,允许用组件系统代替单体组件,反之亦然,同时保持参数名称相同。】
系统可以提供一个以上的ParameterBinding ,在这种情况下,所有找到的参数将被用来对组件进行参数化;如果一个参数被包含在一个以上的ParameterBinding 中,那么ParameterBinding中的参数值在元素顺序中出现的位置将优先于同一层次的先前源。
当多个层次的ParameterBinding源为同一个参数提供数值时,较高层次的绑定优先于较低层次的绑定,即系统层次的绑定优先于子系统或组件层次的绑定。FMU组件的参数绑定可以用来设置FMU中任何合法改变的初始值;假设参数化是在FMI 1.0的初始化之前应用的,或者在FMI 2.0进入初始化模式之前应用。
这意味着符合参数化条件的变量具有以下特征:
- 在FMI 1.0中,causality = "input" 或作为start变量
- 在FMI 2.0中,variability != "constant" 和 initial = "exact/approx"
所有类型的系统级connector都可以被参数化。如果系统级connector连接到FMU组件,参数化必须与连接的FMU变量兼容。
引用于另一个SSD/SSP组件的参数绑定会被处理,就像SSD/SSP的顶层系统存在于封闭系统中而不是组件中一样,但有一个特殊情况:组件级的参数绑定存在于SSP/SSD的顶层系统中,优先级在系统的参数绑定之后。因此,它们比任何现有的参数绑定(对于具有相同名称的参数)具有优先权。
属性 | 描述 |
---|---|
type | 可选属性 ,表示参数源的MIME 类型,默认为application/x-ssp-parameter-set ,表示SSP参数集文件格式。目前没有定义更多的类型,但后期可以拓展,用于预先存在的参数文件格式,如CDF等。 |
source | 可选属性,用URI格式表示的参数来源。为解决相对URI的问题,如果sourceBase属性 没有被指定或被指定为SSD,那么sourceBase属性 就是SSD的URI。如果sourceBase属性 被指定为component ,那么sourceBase属性 的值就是被引用组件的URI。这允许通过相对的URI来指定位于组件内部的参数源(例如,一个FMU)。如果缺少source属性 ,参数集必须作为ParameterValues元素 的内容提供,否则就不能出现。 |
sourceBase | 定义绝对基准 URI |
prefix | 定义了用于此绑定的名称解析和映射的可选前缀。 |
以下是为ParameterBinding元素
指定的XML子元素:
XML子元素 | 描述 |
---|---|
ParameterValues | 可选元素,可用来为ParameterBinding提供内联的参数值。在这种情况下,ParameterBinding元素的source属性 必须是空的。 |
ParameterMapping | 可选元素,提供一个参数映射;它指定了如何将参数源中提供的参数名称和值映射到相关的组件或系统的参数中。如果没有提供映射,参数源的参数名将被用来与组件或系统中的参数名进行名称匹配,参数源的值在应用前不会被进一步转换。 |
5.2.3.1. ParameterValues
当这个元素出现时,如果ParameterBinding元素 的type属性是application/x-ssp-parameter-set
,那么它的内容必须是SystemStructureParameterValues模式所指定的ssv:ParameterSet元素。如果type属性引用了其他MIME类型,那它必须是有效的XML内容。在这种情况下,应该有一个分层规范来定义该MIME类型的内容嵌入方式。
5.2.3.2. ParameterMapping
这个元素提供了一个参数映射,它指定了如何将参数源提供的参数名称和值映射到相关的组件或系统的参数中。如果没有提供映射,参数源的参数名将被用来与组件或系统中的参数名进行名称匹配,参数源的值在应用前不会被进一步转换。
属性 | 描述 |
---|---|
type | 可选属性,定义了参数映射的MIME类型,默认为application/x-ssp-parameter-mapping ,表示SSP参数映射文件格式。目前没有定义更多的类型,但当然可以在以后添加。 |
source | 可选属性,用URI表示的参数映射来源。为了解决相对URI的问题,如果sourceBase属性 没有被指定或被指定为SSD,那么基础URI就是SSD的URI;如果sourceBase属性 被指定为component ,那么基础URI就是被引用的组件的URI。这允许通过相对URI来指定位于组件内部的参数映射源(例如FMU)。如果缺少source属性 ,参数映射必须作为ParameterMapping元素的内容 提供,否则必须为空。 |
sourceBase | 如果该属性缺失或被指定为SSD,则源被解析为SSD的URI,如果该属性被指定为组件,则URI被解析为组件源的(解析)URI。 |
如果source属性
存在,该元素的内容必须为空;如果source属性
不存在,内容必须是ssm:ParameterMapping 元素
,如果该元素的type
属性取值为 application/x-ssp-parameter-mapping
,或者其他任何有效的 XML 内容,如果type
属性引用另一种 MIME 类型。在这种情况下,应该有一个分层规范来定义该MIME类型的内容的嵌入方式。
5.3 System
该元素描述了一个系统,包含了组件、相关的信号字典以及其它的系统,而connectors
作为一个外部世界的接口,可以连接自身以及其它元素。
element | 描述 |
---|---|
Elements | 可选,提供了系统所包含的元素 |
Connections | 可选,提供了系统的连接器、其元素的连接器和这些连接器之间的连接。 |
SignalDictionaries | 可选,为系统提供了定义的信号字典集 |
SystemGeometry | 可选,定义了系统画布的范围。 |
GraphicalElements | 可选,包含了系统中所包含的纯图形元素的集合,比如注释,它们对系统没有语义上的影响,但有助于在图形用户界面中呈现系统。 |
5.3.1 Elements
该可选元素包含了一个或多个组件、相关信号字典或子系统,它们是给定系统的内部内容。Elements
的XML子元素:
element | 描述 |
---|---|
Component | 组件 |
SignalDictionaryReference | 相关信号字典 |
System | 相关子系统 |
5.3.2 Connections
可选元素,提供了系统连接器、其元素连接器和这些连接器之间的连接。
这个元素指定了两个connectors
之间的连接,可以是系统的,也可以是系统元素间的连接。请注意,只有某些种类的connectors
间的连接是允许的,如5.3.2.1节中规定的。还要注意,connectors
属性中的术语start和end,如startElement
或endConnector
,并不表示connectors
所表示数据流的方向。这是connectors
(variables/ports)的语义和它们的kind
属性共同决定的。
ATTRIBUTE | |
---|---|
startElement | 可选属性,作为 startConnector属性 的名称。如果该属性不存在,那么startConnector属性 将命名为系统上的一个连接器。 |
startConnector | 必需属性,作为连接起点的连接器名称。如果没有提供startElement,这表示这个系统上的一个连接器,否则连接器将在给定的元素上找到。 |
endElement | 可选属性,作为endConnector属性的名称。如果该属性不存在,那么endConnector将命名为系统上的一个连接器。 |
endConnector | 必需属性,给出作为连接终点 的连接器名称。如果没有提供endElement属性,这表示系统上的一个连接器,否则连接器将在给定的元素上找到。 |
suppressUnitConversion | 可选属性,指定是否使用start 和end 定义的潜在单位信息来执行start 和end 连接器之间的自动转换。如果提供了该属性并且为true ,那么环境将不执行任何自动转换单位,否则可以自动转换单位。这也与通过LinearTransformation元素提供的可选线性转换有关。在suppressUnitConversion = true的情况下,将执行线性变换而不是任何单位转换,而在其他情况下,除了任何单位转换外,还将执行线性变换。 |
5.3.2.1 Allowed connections
下表规定了所有允许的连接,取决于connector
的所有者(元素的连接器或封闭系统的连接器)和种类(kind)。请注意,下表定义了数据流的格式,与上述连接的start
和end
无关。
SOURCE | DESTINATION | ||
---|---|---|---|
OWNER | KIND | OWNER | KIND |
System | parameter | System | calculatedParameter |
System | parameter | System | output |
System | input | System | output |
System | parameter | Element | parameter |
System | parameter | Element | input |
System | parameter | Element | inout |
System | input | Element | input |
System | input | Element | input |
Element | calculatedParameter | Element | parameter |
Element | calculatedParameter | Element | input |
Element | calculatedParameter | Element | inout |
Element | output | Element | input |
Element | output | Element | inout |
Element | inout | Element | input |
Element | calculatedParameter | System | calculatedParameter |
Element | calculatedParameter | System | output |
Element | output | System | output |
Element | inout | System | output |
以下是为Connection元素指定的XML子元素:
ELEMENT | 描述 |
---|---|
LinearTransformation / BooleanMappingTransformation / IntegerMappingTransformation / EnumerationMappingTransformation | 为连接指定一个可选的转换。如果有的话,这些元素中必须有一个来指定转换的类型。详见4.5.2转换的选择。 |
ConnectionGeometry | 可选元素,定义了连接的几何信息。 |
5.3.2.2 ConnectionGeometry
这个可选的元素定义了连接的几何信息。连接的起点和终点坐标是通过相应connectors
的坐标自动得出的。
连接图形提供的图形信息在默认情况下是为空的坐标列表,它将被解释为svg:polyline的基点,即作为直线段的起始点,并根据起始和结束connectors
的坐标自动添加第一个和最后一个点。请注意,x和y坐标是在包围系统的坐标系中。
属性 | 描述 |
---|---|
pointsX | 提供中间航点的X坐标列表的必要属性。 |
pointsY | 提供中间航点的Y坐标列表的必要属性。 |
5.3.3 SignalDictionaries
信号字典
可以被看作是对信号集合的描述。这种集合也可以被看作是一个 "信号总线"(就像嵌入式系统中的CAN总线)。在设计阶段,人们可以用信号字典来说明信号集合的样子,并定义信号名称和它们的单位。当有大量的信号需要处理时,信号字典可以帮助保持系统描述的清晰性。
信号字典
的另一个好处是可以定义两个或多个信号字典之间的映射,这些字典可能名称或单位不同,这是一个常见的情况。当组件被集成到一个系统中时,这些组件有不同的来源,没有一致的设计或架构。
这个可选元素为系统提供了定义的信号字典集。
信号字典是一个信号的集合,在不同的系统中,可以通过信号字典的引用来访问不同层次的信号字典。
属性 | 描述 |
---|---|
name | 必要属性,信号字典名称在系统中需要唯一,作为其它信号字典的引用名。名称的查找是按层次进行的,也就是说,首先在包含信号字典引用的系统中查找该名称。如果该查询没有产生匹配,则在周围的系统中进行查询,直到找到一个匹配。如果没有找到匹配的信号字典,那就是一个错误。 |
type | 可选属性,给出信号字典的MIME类型,默认为application/x-ssp-signal-dictionary,表示SSP信号字典文件格式。目前没有定义更多的类型,但当然可以在以后添加。 |
source | 该属性以URI的形式表示信号字典的来源(参见RFC 3986)。为了解决相对URI的问题,基本URI是SSD的URI。如果缺少source 属性,信号字典必须作为SignalDictionary元素 的内容在线提供,否则必须为空。对于默认类型application/x-ssp-signal-dictionary ,这种内联内容必须是SystemStructureSignalDictionary命名空间 中的SignalDictionary。详见第8节。 |
5.3.4 SystemGeometry
这个元素定义了系统画布的范围。(x1,y1)和(x2,y2)分别定义左下角和右上角。与ElementGeometry
不同,在ElementGeometry中,x1>x2和y1>y2表示翻转,x1<x2和y1<y2在这里必须成立。如果未定义,系统画布范围默认为系统子元素的所有ElementGeometry元素
的边界框。
当把子系统内容与所包围的父系统一起显示时, 子系统的内部坐标转换到父系统的坐标是由SystemGeometry.{x1,y1,x2,y2}
到ElementGeometry.{x1',y1',x2',y2'}
的转换来定义的, 其中ElementGeometry.z'
是子系统在旋转后实例化到父系统时的各自坐标。
当导入或导出系统时,所有轴坐标的单位是1毫米。标称单位的目的是为了确保在结合不同实施方案的系统时有类似的视觉尺寸和外观。
【长度为1的视觉外观应该是(大致)1毫米。支持图形表示的导入和导出工具可能使用不同的坐标系。定义这个共同的坐标单位是为了使来自不同来源的SSP能够无缝整合。如果没有这样一个共同的单位,在一个工具中导出的SSP在另一个工具中可能显得巨大或微小。因此,导出工具在导出时必须根据自己的坐标系进行缩放,导入工具在导入SSP时必须根据自己的坐标系进行缩放。】
属性 | 描述 |
---|---|
x1 | 必要属性,提供系统画布左下角的x坐标。 |
y1 | 必要属性,给出系统画布左下角的y坐标。 |
x2 | 必要属性,提供系统画布右下角的x坐标。 |
y2 | 必要属性,给出系统画布右下角的y坐标。 |
5.3.5 GraphicalElements
这个可选元素包含了系统中的纯图形元素集合,比如注释,它们对系统没有语义上的影响,但有助于在图形用户界面中呈现系统。目前唯一定义的图形元素是注解元素,它允许将简单的文字注解放入系统图中,但将来可能会根据需要增加更多的元素来交换图形信息。
5.3.5.1. Note
这个元素定义了一个放置在包围系统画布上的图形注释;因此坐标(x1,y1)和(x2,y2)定义了注释的左下角和右上角在父体坐标系中的位置。
注释文本由text属性
给出。演示的期望是,文本的大小和包装都是自动的,以适合注释区域。如果这将导致文本太小,可能有必要提供一种交互式方法(如扩展三角形,或弹出式,或其他方式)来显示注释文本的剩余部分。在text属性
内,换行线表示段落的中断。
属性 | 描述 |
---|---|
x1 | 必要属性,提供note 左下角的x坐标。 |
y1 | 必要属性,给出note 左下角的y坐标。 |
x2 | 必要属性,提供note 右下角的x坐标。 |
y2 | 必要属性,给出note 右下角的y坐标。 |
5.4 Component
一个组件是一个系统的原子元素
(即其内部结构没有被指定),即不可再分。
- type
- 可选属性,表示组件的MIME类型,默认为
application/x-fmu-sharedlibrary
,表示组件的类型;application/x-ssp-definition
表示系统结构描述文件;application/x-ssp-package
表示系统结构包文件;目前没有定义其他类型。
- 可选属性,表示组件的MIME类型,默认为
- source
- 该属性表示组件的URI来源(参见RFC 3986)。为了解决相对URI的问题,基础URI是SSD的URI。因此,对于位于SSD旁边的组件,没有方案和授权的相对URI应该被用来指定组件的来源。通过这种方式,SSD的URI在SSP被解包到文件系统后仍然有效。
- 例如,对于一个名为MyDemoFMU.fmu的FMU,位于SSP的
resources
目录下,正确的URI应该是resources/MyDemoFMU.fmu。 - 当引用另一个
SSP
时,默认情况下会引用该SSP的默认SSD(即SystemStructure.ssd
)。当需要选择一个非默认的SSD
时,那么非默认SSD的名称必须通过标识符定义,即URIresources/SubSSP.spp#VariantB.ssd
将引用SubSSP.spp
的VariantB.ssd
,位于相对于该SSD的资源目录中。 - 当URI是一个带有片段标识符的同文档URI,例如#other-system,那么片段标识符必须识别这个SSD文档中的一个系统元素,其id属性与片段标识符相同。这个机制可以用来通过引用定义元素来多次实例化一个嵌入式系统定义。
- 请注意,实现只支持上述的相对URI,不一定要被实现支持,事实上,由于安全性或其他原因,通常不支持。实施方案也不一定要支持任何绝对URI和任何特定的URI方案(这允许支持任何和所有种类的URI,如果这被认为是有用的)。
- implementation
- 当被引用的组件是一个包含多种实现的FMU时[例如Co-Simulation和Model Exchange],这个可选的属性可以用来决定应该采用哪种FMU实现。如果该属性缺失或使用默认值
any
,导入工具可以自由选择使用哪种 FMU 实现。如果该值是CoSimulation
或ModelExchange
,则必须使用相应的FMU实现。如果指定FMU的实现类型在FMU中不存在,那是一个错误。
- 当被引用的组件是一个包含多种实现的FMU时[例如Co-Simulation和Model Exchange],这个可选的属性可以用来决定应该采用哪种FMU实现。如果该属性缺失或使用默认值
5.5 SignalDictionaryReference
信号词典引用是系统中引用信号词典的一个元素,即它是信号词典的放置者,允许通过其连接器访问信号词典的内容,而连接器必须引用信号词典条目。
属性 | 描述 |
---|---|
dictionary | 这个必要属性给出了要被引用的信号字典名称。名称的查找是按层次进行的,也就是说,首先在包含信号字典引用的系统中查找该名称。如果该查询没有产生匹配,则在周围的系统中进行查询,等等,直到找到一个匹配。如果没有找到匹配的信号字典,那就是一个错误。 |
6. System Structure Parameter Values (SSV)
System Structure Parameter Values(缩写为SSV)元素为一个组件或系统提供参数集。该XML元素可以作为父元素的子元素,也可以作为一个单独的文件被父元素引用;该文件可以包含在SSP文件中,也可以作为单独的文件通过URL指定。
关于分层命名结构和优先规则的信息,见5.2.3节。
SSV文件必须是符合作为本标准一部分的SystemStructureParameterValues XML Schema
格式,该格式是XML 1.0 文件。该文件必须使用 UTF-8 编码。所有与SSV相关元素都定义在http://ssp-standard.org/SSP1/SystemStructureParameterValues
的命名空间中,昵称为ssv。
建议独立的SSV文件使用文件扩展名.ssv
。除了这个文件扩展名外,文件名无限制。
6.1 ParameterSet
ParameterSet元素包含参数和元数据信息。如果SSV作为一个单独的文件提供,根元素必须是一个ParameterSet元素。
属性 | 描述 |
---|---|
version | 这个必要属性指定了参数集所符合的本规范的版本。只有主要和次要的版本号被包括在内,补丁的版本号不能被包括在这个属性中。对于当前的候选版本,必须是1.0-RC1。 |
name | 这个必要属性提供了一个名称,可用于向用户展示参数集的作用。 |
以下是为ParameterSet元素指定的子元素:
子元素 | 描述 |
---|---|
Parameters | 这个必要元素指定了参数组中的参数。详见下文。 |
Enumerations | 这个可选元素必须包含参数集中引用的所有枚举的定义。其定义见4.4.1节。 |
Units | 这个可选元素必须包含参数集中引用的所有单位的定义。其定义见4.4.2节。 |
6.2 Parameters
Parameters
元素包含了一个Parameter
元素的列表。如果这个列表是空的,应用时无法对任何系统或组件产生影响。这不是必须的, Parameters
元素中包含的所有参数不是必须和应用的组件或系统中的参数相对应(通过系统结构描述中的ParameterBinding
元素)。这允许定义大型参数数据集,其中只有一个子集被应用于特定的情况。关于ParameterBinding
的语义定义见5.2.3节。
Parameter
元素包含以下属性:
属性 | 描述 |
---|---|
name | 指定了参数在参数集合中的名称 |
Parameter
元素包含以下元素:
Element | 描述 |
---|---|
Real / Integer /Boolean / String /Enumeration / Binary | 这些元素中必须有一个确切的元素来指定参数的类型 |
6.2.1 Real
该类型指定了一个IEEE754中描述的双精度浮点数参数。
属性 | 描述 |
---|---|
value | 参数的取值 |
unit | 可选的属性,定义了参数的单位名称。该名称必须与ParameterSet根元素中的Units元素中定义的单位名称相匹配 |
6.2.2 Integer
该类型指定了一个IEEE754中描述的32-bit有符号整数参数。
属性 | 描述 |
---|---|
value | 参数的取值 |
6.2.3 Boolean
该类型指定了一个IEEE754中描述的布尔参数。
属性 | 描述 |
---|---|
value | 参数的取值 |
6.2.4 String
该类型指定了一个参数,代表一个零端UTF-8编码的字符串。
属性 | 描述 |
---|---|
value | 参数的取值 |
6.2.5 Enumeration
这种类型指定了一个代表枚举值的参数,由一个枚举定义指定。
属性 | 描述 |
---|---|
value | 必要的属性,将参数的值指定为枚举项的名称 |
name | 可选的属性,指定了参数引用的枚举类型的名称 。如果它被提供,该名称必须与ParameterSet中Enumerations元素中定义的枚举类型的名称相匹配。 |
6.2.6 Binary
该类型指定一个参数,代表一个以长度为终点的二进制数据类型。
属性 | 描述 |
---|---|
value | 该属性以十六进制编码的二进制值给出参数的值。 |
mime-type | 可选的属性,指定了基础二进制数据的MIME类型,默认为application/octet-stream 类型。 |
7. System Structure Parameter Mapping (SSM)
参数映射
(Parameter Mapping)描述了参数源中的参数与系统或组件的实际参数
之间的映射。该映射将参数源中的参数名称
映射到系统或组件中。在应用参数之前,它还可以选择性地提供应用于参数值的转换
。
参数映射
可以作为一个独立的XML文件(SSM文件)提供、可以从SSD文件
中引用,也可以直接嵌入SSD的ssd:ParameterMapping
元素中(详情见5.2.3.2节)。
SSM文件必须是符合SystemStructureParameterMapping.ssd
格式的[XML10]文件,该文件作为本标准的一部分发布。建议独立的SSM文件使用文件扩展名.ssm
;除此之外,文件名不受限制。SSM文件的根元素必须是一个ParameterMapping
元素;包含任意数量的MappingEntry
元素。
7.1 ParameterMapping
该元素描述了一组参数映射,它由多个映射条目
(MappingEntry)组成,每个MappingEntry
描述一个参数映射(见下一节)。ParameterMapping
必须包含所有要被映射的参数条目:
- 参数源的参数如果没有在
MappingEntry
中被引用,将不会被应用; - 所有在
MappingEntry
中被引用的参数将只使用它们被映射到的名称,即在应用参数时不考虑任何原始名称; - 实现时,不得将多个参数映射为同一个参数名。
属性 | 描述 |
---|---|
version | 必要属性,指定了参数映射所符合的规范版本 。只有主要和次要的版本号被包括在内,补丁的版本号必须不包括在这个属性中;对于当前的候选版本,必须是1.0-RC1 。 |
7.1.1 MappingEntry
这个元素指定了源参数和被参数化的系统或组件参数之间的单一映射。通过其可选的GTTransformationChoice
元素,可以指定在转换目标参数之前应用于参数值的换算
。
属性 | 描述 |
---|---|
source | 必要属性,指定了参数源中的参数名称,该参数将被映射到一个新名称以及提供参数值的换算 |
target | 必要的属性,指定了系统或组件中要被参数化的参数名称 |
suppressUnitConversion | 可选属性,指定是否使用值和目标定义的潜在单位信息来执行参数源和目标参数的自动转换。如果提供了这个属性并且其值为真,那么将不执行任何自动单位转换,否则可以执行自动单位转换。这与通过LinearTransformation元素提供的可选线性转换也很重要。在suppressUnitConversion = true 的情况下,线性变换将被执行,而不是任何单位转换;而在其他情况下,线性变换将在任何单位转换之外被执行。在这种情况下,指定的变换将在对值进行任何单位转换之后进行。 |
包含以下子元素:
ELEMENT | 描述 |
---|---|
LinearTransformation /BooleanMappingTransformation /IntegerMappingTransformation /EnumerationMappingTransformation | 为映射指定一个可选转换。如果有的话,这些元素中必须有一个来指定转换的类型。详见4.5.2转换的选择。 |
8. System Structure Signal Dictionaries (SSB)
信号字典(SignalDictionary)是通过DictionaryEntry
元素定义的信号集合。信号字典是一个单独的XML文件,即SSB文件。这可以从SSD文件
中引用,也可以直接嵌入SSD的ssd:ParameterMapping
元素中。
SSB文件必须是一个符合 SystemStructureSignalDictionary文件
锁定义格式的XML 1.0
文件,该文件会作为本标准的一部分提供;相关文件使用文件扩展名.ssb
。除了文件扩展名的建议外,文件名是任意的。
SSB文件的根元素必须是一个SignalDictionary
元素,它包含任意数量的DictionaryEntry
元素。 DictionaryEntry
元素中使用的任何枚举或单位都必须在SignalDictionary
的Enumerations
和Units
子元素中声明。
8.1 SignalDictionary
该元素描述了一个信号字典,由一个或多个字典条目组成,每个条目描述了信号字典中的一个信号。
属性 | 描述 |
---|---|
version | 必需属性,定义了协议的版本。只有主要和次要的版本号被包括在内,补丁的版本号必须不包括在这个属性中。对于当前的候选版本,必须是1.0-RC1。 |
元素 | 描述 |
---|---|
DictionaryEntry | 一个或多个信号字典的条目 |
Enumerations | 可选元素。包含了信号字典相关的所有枚举的定义 |
Units | 可选元素。包含了信号字典相关的所有单位的定义 |
8.1.1 DictionaryEntry
属性 | 描述 |
---|---|
name | 给予信号字典条目一个名称的必要属性,该名称在信号字典中应是唯一的。 |
元素 | 描述 |
---|---|
Real / Integer /Boolean / String /Enumeration / Binary | 这些元素中必须有一个来指定信号字典条目的类型 |
9. Literature
- [RFC2119] IETF: RFC 2119 - Key words for use in RFCs to Indicate Requirement Levels. IETF Best Current Practice BCP 14. 1997. www.ietf.org/rfc/rfc2119...
- [ZIP635] PKWARE Inc.: APPNOTE.TXT - .ZIP File Format Specification, Version 6.3.5. 2018.pkware.cachefly.net/webdocs/APP...
- [SV200]Preston-Werner, T.: Semantic Versioning 2.0.0. 2013.semver.org/spec/v2.0.0...
- [XML10]World Wide Web Consortium: Extensible Markup Language (XML) 1.0 (Fifth Edition). W3C Recommendation. 2008. www.w3.org/TR/2008/REC...
- [FMI20]Modelica Association: Functional Mock-up Interface for Model Exchange and CoSimulation, Version 2.0. 2014.svn.modelica.org/fmi/branche...
- [OSMP100] Mai, P.R.: OSI Sensor Model Packaging Version 1.0.0. 2018.github.com/OpenSimulat...