
基于INTERWORK VDE的SOME/IP通信设计
一、前言
在前期的文章《基于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模型。
图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.
图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.
图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;
图4:MAC完整帧结构
如图5位VDE的VLAN定义界面,且包含两个标签页:
- General标签页:定义VLAN Name、VLAN ID(2字节,大小范围为0x0000-0x00FF)、VLAN Prority(优先级范围0-7);
- SD Address标签页:用来添加服务发现地址,
图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;
图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提供的服务实例。
图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接口。
图8:VDE导出ARXML文件导入Simulink
三、总结
上述介绍的Enterprise Architect+INTEWORK VDE+Matlab Simulink工具链覆盖了SOA架构设计主要工作,从而使各阶段的开发输入输出能够有效衔接,避免了传统文档传递的过程,实现数据复用、数据一致性,另外本文介绍的INTEWORK VDE工具不仅支持XMI文件导入以及ARXML文件导出,同时支持传统CAN、CANFD、LIN以及J1939的设计工作,并可方便的实现EXCEL通信矩阵、DBC、LDF、ARXML等各种格式文件的导入以及导出,满足上下游不同业务的需求。
文章转载自公众号:汽车电子与软件
