如何在PREEvision中进行SOA建模
来源: | 作者:蔡呈祥 | 发布时间: 2019-07-26 | 2825 次浏览 | 分享到:
随着车载以太网技术的日益成熟,国内大部分OEM都已经着手SOA的设计工作,并将以太网通信矩阵生成ARXML文件,用于项目前期的网络行为仿真和后期测试验证。PREEvision是一款基于模型、集成式的可视化开发工具,支持以太网SOA的架构开发设计,是汽车工业及相关领域E/E架构开发的首选工具,下面小编将为大家展示如何在PREEvision中进行SOA建模。

1、SOA设计过程
为了大家更好的理解,这里定义了一个简单的服务“ESPStatus”,服务提供方为ESP(即电子稳定控制单元),服务使用方为IP(即仪表控制单元),该服务包含Method、Event、Fields 3种接口,4种行为:
» AVH_Open:打开/关闭AVH;
» ABS_Status:“ABS状态改变”事件;
» changeJerk_Level:“前碰撞预警Jerk等级改变“事件;
» getJerk_Level:获取当前Jerk等级。
服务的名称、提供方/消费方实例名称/ID、Server/Client如下:



服务接口的具体细节如下:



2、SOA建模过程
PREEvision软件为SOA建模提供了一个可视化的10层设计模型,简化了建模步骤,部分步骤只需操作相应快捷键即可完成,极大地减少工作量,提升开发效率。

2.1 服务定义

进入Service Definition层,根据SOA设计过程中定义的通信矩阵,需要设置的内容如下:
①服务定义



②服务接口定义



③服务接口ID定义



④服务接口数据类型定义



在设置接口数据类型时,需要在树形图中定义不同的Application Data Type(ADT)并与相应接口关联,且每个ADT需要有可供Mapping的Implementation Data Type(IDT)及相应的 Base Type。它们之间的关系如下:



2.2 服务软件组件Type生成
进入Service Implementation层,PREEvision软件提供了一键生成软件组件Type的快捷键,设置完成示意图如下:



2.3 硬件定义
进入Hardware Definition层,在模型树中的Components Package目录下新建IP、ESP、Switch的网络拓扑图。如下图所示:



2.4 以太网通信配置
进入Ethernet Communication层,设置ECU Definition、Ethernet Cluster Configuration Editor。
① ECU Definition Editor设置内容如下:
» ID:给ECU在网络中编上号;
» Physical Layer Type:物理层类型选择;
» CNB:主从时钟选择;
» MAC-Address:生成硬件MAC地址 ;
» 802.1Q:表示是否支持IEEE802.1Q协议中的VLAN Tagging字段;
» VLAN:设置VLAN属性 ;
» IPv4 config:生成IPv4地址 。
设置完成示意图如下:



② Ethernet Cluster Configuration Editor设置内容如下:
» Socket Address:生成套接字属性 ;
» TP:指定传输端口 ;
» NEP:网络终端节点,包含IP地址信息;
» AEP:应用终端节点,表示实际使用套接字属性的应用对象。
设置完成示意图如下:



2.5 服务部署
进入Service Deployment层,打开Socket Deployment Editor,将服务提供方和服务消费方与SoAd_ESP和SoAd_IP关联,ESP对应ESPStatus_Provider,IP对应ESPStatus_Consumer,设置完成示意图如下:



2.6 软件架构
进入Software Architecture层,此步用于生成软件模型中ESPStatus_Provider与ESPStatus_Consumer间的端口连接关系,设置完成示意图如下:


2.7 信号路由
回到Service Deployment层,打开ECU Deployment Edtior,选中ESPStatus_Proveder对象,点击快捷键生成相应的PDU Transmission以及Signal Transmission。



2.8 数据序列化
进入Data Serialization层,此步的目的是将实际传输信号进行序列化,以实现在网络上正确的数据传输。
此外,还需设置SOME/IP Default Transformer对象。



在Property-Transformer Attributes页中设置以下属性:
» Protocol:SOMEIP
» Transformer Class:SERIALIZER
» Version:1
另外,还需设置Signal、Signal IPDU以及Signal-IPDU-Assignment的属性,如下:
» Signal:设置信号长度
» Signal IPDU:设置IPDU长度
» Signal-IPDU-Assignment:设置Byte Order、Transfer Property

2.9 服务发现设置

进入Service Discovery层,3个Editor的设置如下:
① Service Discovery Editor:用于生成SD相关的对象



② Service Discovery Subscription Editor:用于生成SD订阅相关的对象



③ Service Discovery Editor:设置newPSI、newCSI、EH_EG_ESPStatus、CEG_EG_ESPStatus的属性参数,这里的参数设置将直接影响后续的仿真行为是否正确。选中每一个对象,在右下角Property-parameters页中依次设置,主要设置参数如下:
» Minor Version:次要版本;
» Major Version:主要版本;
» Instance Identifier:1,视通信矩阵而定;
» Service Identifier:10,视通信矩阵而定;
» Offer Cyclic Delay:2,表示Offer方在进入主阶段后Offer报文的发送周期;
» Initial Delay Min Value:初始化阶段延迟最小值;
» Initial Delay Max Value:初始化阶段延迟最大值;
» Initial Repetitions Base Delay:重复阶段报文发送基时;
» Initial Repetitions Max:重复阶段报文发送最大次数;
» TTL:生存周期,单位为秒;
» Multicast Threshold:如果Server在响应订阅时不需要用到多播,该值就设置为0;
» Event Group Identifier:事件组ID,视通信矩阵而定,当前为201。

到此,我们的建模过程完成。


3、SOA模型验证

SOA模型建立完成之后,我们还需验证模型的有效性,导出ARXML文件借助CANoe软件进行仿真,观察Trace窗口中的报文行为是否符合预期!具体的仿真设置过程以及CAPL脚本编写不属于本文主题,故不作展示,附上一张仿真的截图供大家参考分析:



从截图中我们可以看到Find、Offer、Subscribe Eventgroup、Subscribe Eventgroup Acknowledgment这4种行为是导入ARXML数据库后运行CANoe就会有的;而Notification、Request or Response、get Request or Response这3种行为需要编写CAPL语言基于数据库进行触发。

以上就是SOA建模流程。这是一个很基础的例子,目的是为了帮助大家熟悉建模过程,实际项目中SOA建模的复杂度会高很多,也会涉及到更多的数据类型。但万变不离其宗,只有将简单的模型彻底理解后,才能构建出更复杂的模型,并保证其有效性,力求达到“导出即可用”的境界~





相关文章