AP Autosar -SOME/IP -- 配置实操
主要内容
本文将以时钟clock 作为一个服务,来配置一下 someip 的配置流程。以及最后生成的配置文件。
在这里面我们将明白配置SOME/IP 需要的一些元素,网络配置等知识点。
接上篇
AP Autosar -Execution Management -- 基础实操
首先我们打开配置界面
好,在这里我们进行简单的例子配置。
01 服务端配置
some/ip 是服务端与客户端相互通讯的模型。这里我们首先先建一个服务端。
名字暂且叫做 vsomeip-udp-service
然后我们紧接着就需要对网络进行配置。
网络配置
这里可以看到。这里配置了两个IP
- 多播IP
- 指定地址IP
多播 IP 这里是为了服务发现使用 也就是我们说到的 some/ip sd.
Multicast IP(多播IP)是一种网络技术,它允许一台计算机向多个目标计算机发送数据包。在SOME/IP中,Multicast IP通常用于实现消息的广播或组播。Multicast IP地址是一个特殊的IP地址范围,其中的数据包可以被一组指定的计算机接收和处理。
具体IP 如上图。
然后哦我们对指定地址IP 也进行了配置,这里是执行客户端的请求。
上午可以看到指定IP的IP 配置。
到这里网络配置算配置完成。
下面要对服务发现进行"组装"。什么意思呢?就是把IP 和 port 对应好。
服务发现 SD
这里使用刚才的多播IP 与 port 5000 作为SD 的配置参数。如下图。
技术设施已经搭建完毕,下面需要来配置一下我们这个machine 需要实现的server 是什么,如何配置。
server 配置
从上图可以看出一些必要参数。
deployment ID: 99
在SOME/IP(Scalable service-Oriented MiddlewarE over IP)中,Server端的Deployment ID(部署ID)是指用于唯一标识SOME/IP服务端的标识符。
Deployment ID在SOME/IP中的作用是确保每个SOME/IP服务端实例都具有唯一的标识符,以便其他SOME/IP节点能够准确地识别和寻址该服务端。
Server端的Deployment ID通常由网络管理员或系统开发人员在部署时分配和配置。它可以是一个整数、字符串或其他形式的唯一标识符,取决于具体实现和部署需求。每个SOME/IP服务端实例都应该具有不同的Deployment ID,以确保唯一性。
通过使用Deployment ID,其他SOME/IP节点可以向特定的服务端发送请求,而不会与其他同类型的服务端混淆。它在SOME/IP网络中充当服务端的身份证,帮助其他节点定位和访问特定的服务端。
因此,Server端的Deployment ID在SOME/IP中用于唯一标识一个特定的服务端实例,方便其他节点定位和与该服务端进行通信。
也就是说,让客户端能找到服务器。
2. Service Instance ID: 19
在SOME/IP(Scalable service-Oriented MiddlewarE over IP)中,Server端的Service Instance ID(服务实例ID)是指用于标识和区分服务端的不同服务实例的唯一标识符。
在SOME/IP协议中,一个服务端可以提供多个不同的服务,每个服务可以拥有一个或多个实例。Service Instance ID用于标识特定服务在服务端中的不同实例。
Service Instance ID通常在服务端启动时分配和配置。它可以是一个整数、字符串或其他形式的唯一标识符,具体格式和规则根据SOME/IP实现和应用需求而定。
通过使用Service Instance ID,SOME/IP客户端可以根据具体的服务实例向服务端发送请求。它在服务端中充当服务实例的身份证,以便客户端能够准确识别和访问特定的服务实例。
总之,Server端的Service Instance ID在SOME/IP中用于唯一标识服务端中的不同服务实例,以便客户端能够识别和访问特定的服务实例。
也就是说,让客户端找到服务器后,能准确地告诉服务器要的是哪个服务。
3. Event ID
在SOME/IP(Scalable service-Oriented MiddlewarE over IP)中,Server端的Event ID(事件ID)是指用于标识和区分不同事件的唯一标识符。
在SOME/IP协议中,事件(Event)是指由服务端触发并向其他节点通知的特定情况或状态变化。例如,一个传感器节点可能定期发送传感器数据,这个数据到达时将触发一个事件,通知其他节点数据的到达。
Event ID在Server端中用于标识不同的事件。它通常由服务端定义和分配,并在事件触发时通过SOME/IP协议通知其他节点。Event ID可以是一个整数、字符串或其他形式的唯一标识符,具体格式和规则取决于SOME/IP实现和应用需求。
通过使用Event ID,其他节点(如客户端)可以订阅感兴趣的事件,并在事件触发时接收相应的通知和数据。Event ID帮助服务端和其他节点准确识别和处理不同类型的事件。
总之,Server端的Event ID在SOME/IP中用于标识不同的事件,并在事件触发时与其他节点进行通信,以便进行事件的订阅、处理和通知。
也就是说 让服务端知道 客户端想要这个服务干什么具体的事情。
通讯协议UDP。至于UDP 和 TCP 这里就不多说了。前面刚好有个文章说了一下TCP。
简单说一下UDP的应用,看抖音直播的都是UDP。
到这里我们的服务端就已经配置完成。
下面我们看一下客户端的配置。
02 服务端配置
整体思路和服务端一致。首先客户端也是一个machine。这里就叫做ClockClient。
然后对网络进行配置。注意的是这里的IP 需要是和服务器一个网段。因为我们设计的是服务端与客户端可以直接通讯。
网络配置
服务发现,也就是SOME/IP SD 这里和前面一样。配置多播IP 与port
服务发现SD
最后 配置一下客户端的本身内容,client.
client 本身
这里介绍的很少,因为参数的含义在服务端已经介绍过了。
下面我们看一下通过上文的配置。会具体生成什么样的配置文件。
03配置文件生成
服务端
{
"unicast": "192.168.56.20",
"netmask": "255.255.0.0",
"logging": {
"level": "debug",
"console": "true",
"file": {
"enable": "true",
"path": "/var/log/vsomeip.log"
},
"dlt": "true"
},
"applications": [],
"clients": [],
"services": [
{
"name": "vsomeip-udp-service_clock_PSSI",
"service": "99",
"instance": "19",
"unreliable": "5000",
"events": [
{
"name": "clockEvent",
"event": "127",
"is_field": "false",
"is_reliable": "false",
"update_cycle": 0
}
],
"eventgroup": [],
"methods": []
}
],
"routing": "/COMSIPGATEWAY",
"service-discovery": {
"enable": "true",
"multicast": "224.244.224.245",
"port": "5000",
"protocol": "udp",
"initial_delay_min": "0.0",
"initial_delay_max": "0.0",
"repetitions_base_delay": "0.0",
"repetitions_max": "0",
"ttl": "0",
"cyclic_offer_delay": "0.0",
"request_response_delay": "0.0"
}
}
客户端
{
"unicast": "192.168.56.21",
"netmask": "255.255.0.0",
"logging": {
"level": "debug",
"console": "true",
"file": {
"enable": "true",
"path": "/var/log/vsomeip.log"
},
"dlt": "true"
},
"applications": [],
"clients": [],
"services": [
{
"name": "ClockClient_clock_RSSI",
"service": "99",
"instance": "19",
"unreliable": "5000",
"events": [
{
"name": "clockEvent",
"event": "127",
"is_field": "false",
"is_reliable": "false",
"update_cycle": 0
}
],
"eventgroup": [],
"methods": []
}
],
"routing": "/COMSIPGATEWAY",
"service-discovery": {
"enable": "true",
"multicast": "224.244.224.245",
"port": "5000"
}
}
这里暂时不过多解读,下一篇 仿真运行一下,看实际效果。
文章转载自公众号:汽车与基础软件