基于INTERWORK VDE的SOME/IP通信设计

来源:汽车电子与软件
2023-08-18
1671

一、前言



在前期的文章《基于Enterprise Architect的SOA开发方法》中介绍了使用MBSE开发SOA架构的方法,通过需求分析、功能设计、模块设计过程定义Service以及Service Interface,接下来的Ethernet通信设计过程需承接上游服务设计的内容,进行数据链路层(MAC+VLAN)、网络层(IP)、传输层(UDP/TCP Port)以及应用层(SOME/IP、SOME/IP-SD)的参数定义,并最终导出ARXML文件输入下游软件开发团队,对于ARXML文件的生成方法行业内目前大概的方式如下:

  • 通过对Enterprise Architect进行二次开发,可基于文档生成器导出服务矩阵,然后再使用第三方插件将SOME/IP服务矩阵转换为ARXML文件,从而导入Matlab生成应用层开发的SWC模型;


  • 直接从Enterprise Architect导出XMI文件,然后将XMI格式文件导入下游通信设计工具比如INTEWORK VDE,从而进行Ethernet通信设计,并可导出AP XML文件及CP XML文件,从而导入Matlab生成应用层开发的SWC模型。



8185.png
图1:Enterprise Architect XMI文件导出


二、SOME/IP通信设计


本文主要介绍的就是第二种方式,其基于Enterprise Architect+INTEWORK VDE的工具链实现了SOA架构的完整开发,如下图2所示,通过将Enterprise Architect导出的XMI文件导入VDE工具,从而形成了Service Library以及DataType Library并根据服务的部署关系自动创建Ethernet Node和Provide Service Instance和Consumer Service Instance.


8186.png


图片


81813.png


2:EA导出XMI文件导入VDE


2.1 服务参数定义

将XMI文件导入VDE后,会根据配置文件自动设置默认参数,例如Service ID、Element ID、Instance ID、Port number、Mac Address、Netork Address、Network Mask等,通信工程师可使用默认参数或根据实际需要修改默认参数。服务定义页面共有General、Method、Event、Field和EventGroup五个标签页:

  • General标签页:主要用于定义Service Name、Service ID、Service Description;

  • Method标签页:可以定义Element Name、Element ID(0x0001-0xFFFE)、RR/FF、Protocol(UDP/TCP)、Parameter Name、Datatype、Direction(IN/OUT/INOUT)、Comment;

  • Event标签页:可以添加多个Event类型的接口,并定义Element Name、ElementID、Protocol、Trigger(Cycle/trigger)、Period、Threshold Value、Parameter Name、Data Type以及Comment;

  • Field标签页:可以添加多个Field类型的接口,并定义Element Name、Protocol、Getter/Setter/Notifier、ElementID、Trigger、Period、Threshold Value、Parameter Name、DataType以及Comment;

  • EventGroup标签页:可定义EventGroup Name、EventGroup ID, 并选择当前Service下的Event和Notifier添加到对应的EventGroup.


8187.png
3:Service定义界面


2.2 VLAN定义


VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN再逻辑上划分为多个广播域的通信技术,每个VLAN是一个广播域,VLAN内的主机间可以直接通信,而VLAN间则不能直接互通,从而避免冲突严重、广播泛滥的问题,从而提升网络通信质量。如图4为VLAN MAC帧的帧结构,在目标物理地址和源物理地址后跟4个字节的VLAN Tag,其包含如下3个部分:


  • PRI(3bit):帧优先级,就是通常所说的802.1p;


  • CFI(1bit):规范标识符,0为规范格式,用于802.3或Ethernet II以太网帧


  • VLAN ID:就是VLAN的标识符ID;


8188.png
图4:MAC完整帧结构

如图5位VDE的VLAN定义界面,且包含两个标签页:


  • General标签页:定义VLAN Name、VLAN ID(2字节,大小范围为0x0000-0x00FF)、VLAN Prority(优先级范围0-7);


  • SD Address标签页:用来添加服务发现地址,



8189.png


图5:VLAN定义界面


2.3 以太网节点定义

在以太网网段下可以添加以太网节点,Node编辑界面有General、Network Addrss和Port Config三个标签页:

  • General标签页:定义Node Name,Mac Address;

  • Network Address标签页:定义ECU的IP地址以及子网掩码;

  • Port Config标签页:一个ECU可以有多个端口,ECU是通过Port和VLAN关联,通常一个端口可以与多个VLAN进行关联,定义Port以及对应的Network Address 和VLAN;


81810.png


图6:Ethernet Node 定义界面


2.4 添加Service Instance

Service Instance 是对Service的实例化,包含Provide Service Instance和Consumed Service Instance,Provide Service Instance是指提供端服务实例的部署,Consumed Service Instance是指消费端服务实例的部署。每个ECU Node可以提供多个服务实例和消费多个服务实例,每个ECU不能消费自己提供的服务实例,只能消费处于同一个VLAN下的其他ECU提供的服务实例。

81811.png
图7:Service Instance 编辑界面


编辑Service Instance界面包含如下内容:

  • Provide Service Name:不可编辑,与添加的service名称一致;

  • Service ID:不可编辑;

  • Protocol:为Service中指令所拥有的所有协议类型,TCP、UDP和TCP/UDP,不可编辑;

  • Instance ID:长度一个字节,大小范围0x00-0Xff,通过Instance ID区分不同ECU提供的Service;

  • Port Number:端口号,大小范围是0-65535;

  • VLANID:选择该Service Instance要添加到那些VLAN下,可供选择的VLAN为当前ECU已经添加的VLAN,可以同时选择多个VLAN。

在ECU下面添加Consumed Service Instance时,可供选择的Service Instance为与当前ECU处于统一VLAN下的其他ECU提供的Provide Service Instance,并且Provided Service Instance所选择的VLAN也包含当前ECU所在的VLAN。


2.5 ARXML文件导出

在完成上述设计工作后,可以整个Etherne网段或ECUNode为单位导出ARXML文件(AP XML、CP XML),并导入下游Matlab Simulink创建SWC接口。


81812.png
图8:VDE导出ARXML文件导入Simulink


三、总结


上述介绍的Enterprise Architect+INTEWORK VDE+Matlab Simulink工具链覆盖了SOA架构设计主要工作,从而使各阶段的开发输入输出能够有效衔接,避免了传统文档传递的过程,实现数据复用、数据一致性,另外本文介绍的INTEWORK VDE工具不仅支持XMI文件导入以及ARXML文件导出,同时支持传统CAN、CANFD、LIN以及J1939的设计工作,并可方便的实现EXCEL通信矩阵、DBC、LDF、ARXML等各种格式文件的导入以及导出,满足上下游不同业务的需求。



收藏
点赞
2000