AP Autosar -SOME/IP -- 配置实操

无聊逛51
发布于 2023-11-13 11:43
浏览
0收藏

主要内容

本文将以时钟clock 作为一个服务,来配置一下 someip 的配置流程。以及最后生成的配置文件。

在这里面我们将明白配置SOME/IP 需要的一些元素,网络配置等知识点。

接上篇

AP Autosar -Execution Management -- 基础实操

首先我们打开配置界面

AP Autosar -SOME/IP -- 配置实操-鸿蒙开发者社区

AP Autosar -SOME/IP -- 配置实操-鸿蒙开发者社区

好,在这里我们进行简单的例子配置。

01 服务端配置

some/ip 是服务端与客户端相互通讯的模型。这里我们首先先建一个服务端。

AP Autosar -SOME/IP -- 配置实操-鸿蒙开发者社区

名字暂且叫做 vsomeip-udp-service


然后我们紧接着就需要对网络进行配置。

网络配置

AP Autosar -SOME/IP -- 配置实操-鸿蒙开发者社区

这里可以看到。这里配置了两个IP

  • 多播IP
  • 指定地址IP

多播 IP 这里是为了服务发现使用 也就是我们说到的 some/ip sd. 


Multicast IP(多播IP)是一种网络技术,它允许一台计算机向多个目标计算机发送数据包。在SOME/IP中,Multicast IP通常用于实现消息的广播或组播。Multicast IP地址是一个特殊的IP地址范围,其中的数据包可以被一组指定的计算机接收和处理。

具体IP 如上图。


然后哦我们对指定地址IP 也进行了配置,这里是执行客户端的请求。

AP Autosar -SOME/IP -- 配置实操-鸿蒙开发者社区

上午可以看到指定IP的IP 配置。


到这里网络配置算配置完成。

下面要对服务发现进行"组装"。什么意思呢?就是把IP 和 port 对应好。

服务发现 SD

这里使用刚才的多播IP 与 port 5000 作为SD 的配置参数。如下图。

AP Autosar -SOME/IP -- 配置实操-鸿蒙开发者社区

技术设施已经搭建完毕,下面需要来配置一下我们这个machine 需要实现的server 是什么,如何配置。

server 配置

AP Autosar -SOME/IP -- 配置实操-鸿蒙开发者社区

从上图可以看出一些必要参数。

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。

AP Autosar -SOME/IP -- 配置实操-鸿蒙开发者社区

然后对网络进行配置。注意的是这里的IP 需要是和服务器一个网段。因为我们设计的是服务端与客户端可以直接通讯。

网络配置

AP Autosar -SOME/IP -- 配置实操-鸿蒙开发者社区

服务发现,也就是SOME/IP SD 这里和前面一样。配置多播IP 与port

服务发现SD

AP Autosar -SOME/IP -- 配置实操-鸿蒙开发者社区

最后 配置一下客户端的本身内容,client.

client 本身

AP Autosar -SOME/IP -- 配置实操-鸿蒙开发者社区

这里介绍的很少,因为参数的含义在服务端已经介绍过了。


下面我们看一下通过上文的配置。会具体生成什么样的配置文件。

03配置文件生成

AP Autosar -SOME/IP -- 配置实操-鸿蒙开发者社区

服务端

{
  "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"
  }
}

这里暂时不过多解读,下一篇 仿真运行一下,看实际效果。




文章转载自公众号:汽车与基础软件

分类
标签
已于2023-11-13 11:43:18修改
收藏
回复
举报
回复
    相关推荐