Autosar4.4:软件组件模板 - PortInterface映射和数据缩放(3/3)

在本规范的早期版本中,对PortInterfaces相互匹配的要求可能会导致以下情况:出于正式原因(例如dataElements的shortName不匹配),“实际”兼容的PortInterfaces将被拒绝。
为了也支持CompositionSwComponentType的开发人员需要连接彼此匹配但不满足正式要求的PortPrototype的情况,引入了“端口接口映射”的概念。

本章共11小节:

1、综述

2、端口接口映射

2.1、S/R接口、参数接口、和存储接口元素的映射

2.2、C/S接口元素的映射

2.3、模式接口元素映射

2.4、触发器接口元素的映射

2.5、组合数据类型元素的映射

3、数据变换

3.1、线性数据缩放

3.2、表转换

4、数据转换的相关性

本节分为三部分:

3、数据变换

3.1、线性数据缩放

3.2、表转换

4、数据转换的相关性

Autosar4.4:软件组件模板 - PortInterface映射和数据缩放(3/3)

3、数据变换

数据转换所支持的CompuMethods类别

引用类别CompuMethods的AutosarDataTypes应该支持数据转换

•线性

•相同

•SCALE_LINEAR_AND_TEXTTABLE,

•TEXTTABLE,

•BITFIELD_TEXTTABLE,以及

•RAT_FUNC-只要后者的语义可以归结为相互线性数据缩放。

数据转换在复合AutosarDataTypes中的应用

数据转换也适用于复合AutosarDataType。

但是,实际转换应单独应用于给定复合AutosarDataType的每个叶元素。

线性数据缩放

可以在以下前提条件下定义线性数据缩放比例:

线性数据缩放的定义

线性缩放的定义如下:

1.关于CompuMethods的存在,应采用以下情况之一:

(a)涉及的AutosarDataType是指IDENTICAL,LINEAR或RAT_FUNC类别的CompuMethods。

(b)如果一侧(发送者或接收者)未引用CompuMethod,则应假定为IDENTICAL类别的“默认” CompuMethod。

2.关于单位的存在,下列情况之一适用:

(a)CompuMethods指的是兼容的单元,或者是指依次引用PhysicalDimension的兼容定义的单元。

(b)一侧不存在单位和物理尺寸:

•如果一侧(发送者或接收者)未引用单位,则应假定具有"单位兼容性"中定义的属性的“虚构”单位。

•如果PhysicalDimension仅在一侧(发送者或接收者)定义,则应将其视为另一侧的默认值。

3.两个CompuMethods都满足以下条件:

Autosar4.4:软件组件模板 - PortInterface映射和数据缩放(3/3)

• N2=N3=...=Ni=0
• D1=D2=...=Di=0
• N1 ≠ 0
• D0 ≠ 0

系数N0代表偏移量,可以取任何值。

倒数线性数据缩放的定义

倒数线性缩放的定义如下:

1.涉及的AutosarDataTypes引用类别RAT_FUNC的CompuMethods。

2. CompuMethods指的是兼容的单元,也指的是依次引用PhysicalDimension的兼容定义的单元。

3.两个CompuMethods都满足以下条件:

Autosar4.4:软件组件模板 - PortInterface映射和数据缩放(3/3)

• N1=N2=...=Ni=0
• D2=D3=...=Di=0
• N0 ≠ 0
• D1 ≠ 0

 系数D0表示(倒数)偏移,可以取任何值。

可以计算线性转换系数

在这种情况下,可以从引用单位的factorSiToUnit和offsetSiToUnit属性以及引用CompuMethods的compuInternalToPhys / compuPhysToInternal的CompuRationalCoeffs中计算出线性转换因子。

表转换

TextTableMapping的存在

如果AutosarDataTypes引用类别TEXTTABLE,SCALE_LINEAR_AND_TEXTTABLE和BITFIELD_TEXTTABLE的CompuMethods,则可以定义TextTableMapping。

请注意,上述中BITFIELD_TEXTTABLE外观后面的用例是,诸如Dem之类的BSW模块需要将数据放入具有嵌入到复合数据类型中的单个位的性质的NVRAM中。

TextTableMapping定义为基于表的转换。

从firstValue到secondValue的转换

在数据从firstDataPrototype到secondDataPrototype的情况下,将valuePair的firstValue转换为secondValue。

从secondValue到firstValue的转换

在从secondDataPrototype到firstDataPrototype的数据流的情况下,secondValue将替换为firstValue。

可逆映射

如果mappingDirection属性设置为双向,则TextTableMapping必须是可逆的。 这要求所有firstValues的列表和所有secondValues的列表在列表内不包含相同的值。

不可逆映射

对于不可逆的TextTableMapping,可以定义每个方向的专用TextTableMapping。

TextTableMapping的适用性取决于CompuMethod.category

如果DataPrototypeMapping聚合TextTableMapping,则仅支持适用的CompuMethod.category值的某些组合:

•firstDataPrototype的类别:TEXTTABLE,

 secondDataPrototype的类别:TEXTTABLE

•firstDataPrototype的类别:SCALE_LINEAR_AND_TEXTTABLE,

 secondDataPrototype的类别:TEXTTABLE

•firstDataPrototype的类别:TEXTTABLE,

 secondDataPrototype的类别:SCALE_LINEAR_AND_TEXTTABLE

•firstDataPrototype的类别:BITFIELD_TEXTTABLE,

 secondDataPrototype的类别:TEXTTABLE

•firstDataPrototype的类别:TEXTTABLE,

 secondDataPrototype的类别:BITFIELD_TEXTTABLE

•firstDataPrototype的类别:BITFIELD_TEXTTABLE,

 secondDataPrototype的类别:BITFIELD_TEXTTABLE

在某种程度上,位域可以看作是原始数据和结构化数据类型之间的混合体:

•一方面,在原始ImplementationDataType的上下文中定义了一个位字段。

•另一方面,借助掩码的定义,可以在原始ImplementationDataType中定义隔离的部分,这些部分在与掩码匹配的数据的语义方面可能彼此完全独立。

换句话说,在原语ImplementationDataType中存在语义独立且可能隔离的部分会产生类似的特征,就好像隔离部分的定义是通过在复合ImplementationDataType上下文中定义原语ImplementationDataTypeElements来创建的。

并且由于可以将引用类别为BITFIELD_TEXTTABLE的CompuMethod的DataPrototype的“任务陈述”视为模仿结构化数据类型的语义,因此还可以应用一些已经存在的结构化规则 在这种情况下也是数据类型。
该结论结合“发送方的元素到接收方的元素的映射”存在,为下面描述奠定了基础。

不需要TextTableMapping的完整性

如果DataPrototypeMapping包含一个或多个TextTableMapping,其中发送方的DataPrototype引用类别为BITFIELD_TEXTTABLE的CompuMethod,则对于发送方的每个可能的值和每个可能的位掩码,不需要接收方的相应值是指定。

关于[TPS_SWCT_01583],仍然重要的是要观察到,在单个掩码内,发送方的所有值都应映射到接收方。

否则,RTE生成器将无法创建明确负责将正确值相互映射的映射代码。

发送方的给定位掩码值的TextTableMapping的完整性

如果DataPrototypeMapping包含一个或多个TextTableMapping,而发送方的DataPrototype引用的类别为BITFIELD_TEXTTABLE,则所有DataPrototypeMapping.textTableMapping应为聚合TextTableMapping.valuePair的集合,其中发送方位mask6的每个可能值均由一个TextTableValuePair.firstValue([TPS_SWCT_01163])或TextTableValuePair.secondValue([TPS_SWCT_01164])恰好表示。

属性bitfieldTextTableMaskFirst的存在

仅当DataPrototypeMapping的firstDataPrototype引用了类别值设置为BITFIELD_TEXTTABLE的CompuMethod时,才应定义属性bitfieldTextTableMaskFirst。

属性bitfieldTextTableMaskSecond的存在仅当DataPrototypeMapping的secondDataPrototype引用了类别值设置为BITFIELD_TEXTTABLE的CompuMethod时,才应定义属性bitfieldTextTableMaskSecond。

对于将类别值设置为BITFIELD_TEXTTABLE的CompuMethod,TextTableMapping的限制

对于其中firstDataPrototype和secondDataPrototype都引用CompuMethods且其类别值设置为BITFIELD_TEXTTABLE且属性TextTableMapping.valuePair存在的任何TextTableMapping,属性TextTableMapping.identicalMapping的值应设置为false。

TextTableMapping中的值和掩码的一致性

如果TextTableMapping元素将位掩码定义为bitfieldTextTableMaskFirst或bitfieldTextTableMaskSecond,则所有包含的TextTableMapping.valuePair.firstValues以及所有TextTableMapping.valuePair.secondValues均不得指定在以下情况下会被排除的值-根据TextTableMapping.mappingDirection的给定值-将应用相关的位掩码。

Autosar4.4:软件组件模板 - PortInterface映射和数据缩放(3/3)
最终引用类别TEXTTABLE,SCALE_LINEAR_AND_TEXTTABLE和BITFIELD_TEXTTABLE的CompuMethod的DataPrototype的映射

 

4、数据转换的相关性

PortInterfaceMapping的案例”中第4项的一个(突出的)用例是NvBlockSwComponentType与AUTOSAR Dcm之间的交互。

具体来说,RTE将调用数据转换器将诊断数据的uint8数组表示形式从Dcm ServiceSwComponentType拥有的PortPrototype转换为NvBlockSwComponentType的PortPrototype拥有的VariableDataPrototype。

为此目的,适用的DataPrototypeMapping指的是firstToSecondDataTransformation角色中的DataTransformation,并且对于两个连接的使用非对称数据转换的PortPrototypes而言——secondToFirstDataTransformation。

Autosar4.4:软件组件模板 - PortInterface映射和数据缩放(3/3)
Ecu内部数据转换的配置

请注意,对于ApplicationSwComponentType和ServiceSwComponentType之间的特定交互作用,该交互定义了对于SenderReceiverInterface键入的PortPrototypes中的dataElements,属性isService必须设置为false。

DataPrototypeMapping.secondToFirstDataTransformation的语义

对于对称数据转换(即,属性DataTransformation.dataTransformationKind的值设置为DataTransformationKindEnum.symmetric),指定引用firstToSecondDataTransformation就足够了。

但是,在两个连接的PRPortPrototypes之间存在用于非对称数据转换的用例,在这种情况下,有必要分别指定每个方向。

为此,除了firstToSecondDataTransformation之外,还存在引用secondToFirstDataTransformation。

图4.20描述了同时指定firstToSecondDataTransformation和secondToFirstDataTransformation的最主要用例。

Autosar4.4:软件组件模板 - PortInterface映射和数据缩放(3/3)
双向存在不对称数据转换的用例

由NvBlockSwComponentType键入的SwComponentPrototype公开了一个PRPortPrototype,该PRPortPrototype连接到另一个PRPortPrototype,该PRPortPrototype连接到代表Dcm服务软件组件的SwComponentPrototype。

NvBlockSwComponentType侧面的PRPortPrototype由NvDataInterface键入,该NvDataInterface聚合单个nvData。用于定义nvData的数据类型是结构化数据类型。

但是,代表Dcm的服务软件组件无法处理结构化数据类型。它只能处理基本类型和基本类型的数组,例如多字节。

因此,(非对称)数据转换器的存在可方便地用于将结构化数据类型的内容序列化为线性数组,反之亦然。

为了明确定义这种预期的语义,DataPrototypeMapping定义了两个引用:

•firstToSecondDataTransformation引用DataTransformation,其中属性dataTransformationKind设置为值asymmetricToByteArray。此参考表示从NvBlockSwComponentType到Dcm的方向。

•secondToFirstDataTransformation,它引用DataTransformation,其中属性dataTransformationKind设置为asymmetricFromByteArray值。此参考表示从Dcm到NvBlockSwComponentType的方向。

这种建模方法已在下面描述中正式化。

DataPrototypeMapping.secondToFirstDataTransformation的适用性

仅当存在引用DataPrototypeMapping.firstToSecondDataTransformation且引用存在属性dataTransformationKind且未设置为对称值的DataTransformation时,才应存在对角色DataPrototypeMapping.secondToFirstDataTransformation的DataTransformation的引用。

对firstToSecondDataTransformation和secondToFirstDataTransformation的限制

如果引用firstToSecondDataTransformation和引用secondToFirstDataTransformation都存在于同一DataPrototypeMapping的上下文中,则

•firstToSecondDataTransformation应引用属性dataTransformationKind设置为asymmetricToByteArray和

•secondToFirstDataTransformation必须引用属性dataTransformationKind设置为asymmetricFromByteArray的DataTransformation。

 

 

Autosar4.4:软件组件模板 - PortInterface映射和数据缩放(3/3)