本文档来自于官方文档,原文请查看官网
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 (x1y2)
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