【AUTOSAR】【以太网】SD

news2024/10/6 12:31:48

目录

一、概述

二、限制与约束

三、功能说明

3.1 需求

3.1.1 通用需求

3.1.2 以太网通信

3.1.3 状态处理

3.1.4 与SoAd的交互

3.1.5 订阅事件组重试处理

3.2 报文格式

3.2.1 Entries Array

3.2.2 Opotion Array

3.2.3 示例

3.3 服务发现条目

3.3.1 服务查找相关的Entry

3.3.2 事件组相关的Entry

3.4 发送和接收消息

3.5 服务器服务和事件处理程序的计时和重复

3.6 客户端服务和消费事件组的时间和重复

3.7 错误分类

3.7.1 开发错误

3.7.2 运行错误

四、API接口

4.1 API定义

4.2 回调接口

4.3 调度接口


一、概述

        AUTOSAR 服务发现模块提供了检测和提供车辆网络内可用的服务的功能,即功能实体。为此,它利用了IP组播和所谓的SOME/IP-SD消息。服务发现模块(Sd)位于AUTOSAR BSW模式管理器模块(BswM)和AUTOSAR 套接字适配器模块(SoAd)之间。

二、限制与约束

        虽然AUTOSAR SD能够响应服务ID、实例ID、主要版本和次要版本的通配符请求(ANY),但此模块只能发送次要版本的通配符查找。

三、功能说明

3.1 需求

3.1.1 通用需求

【规范】服务发现模块应存储服务模式请求,该请求通过调用以下api提供:

  • Sd_ServerServiceSetState()和Sd_ClientServiceSetState(),如果Sd_ServerServiceSetState()服务器服务和Sd客户端服务分别没有引用一个服务器组
  • 如果服务器服务和客户端服务分别引用Sd_ServiceGroupStart和服务器组停止
  • Sd_ConsumedEventGroupSetState(),如果专用客户端服务请求,则。(注意:允许此API调用不依赖于对SdService服务组的引用)
  • Sd_EventHandlerSetState()目前不存在,因为该状态是由服务发现直接从服务器服务的状态推导出来的。

说明:

(1)ServerServiceSetState()函数设置模式:

  • SD_SERVER_SERVICE_DOWN
  • SD_SERVER_SERVICE_AVAILABLE

(2) Sd_ClientServiceSetState()设置模式:

  • SD_CLIENT_SERVICE_RELEASED
  • SD_CLIENT_SERVICE_REQUESTED

(3)Sd_ConsumedEventGroupSetState()设置模式:

  • SD_CONSUMED_EVENTGROUP_RELEASED
  • SD_CONSUMED_EVENTGROUP_REQUESTED

3.1.2 以太网通信

【规范】每个服务发现配置实例应至少具有一个TxPdu ID、一个单播RxPdu ID和一个多播RxPduID,且模块初始化时为期连接的Soad Socket调用SoAd_OpenSoCon();

【规范】对于不同的链接,应配置单独的服务发现实例容器;

3.1.3 状态处理

【规范】通过API Sd_Init()调用初始化服务发现模块后,所有配置的服务器服务实例都应具有“SD_SERVER_SERVICE_DOWN”状态,除非服务器服务实例将SdServer服务自动可用设置为true,否则该状态应设置为“SD_SERVER_SERVICE_AVAILABLE”。

【规范】通过调用API Sd_Init()初始化服务发现模块后,所有配置的客户端服务实例的状态均应为“SD_CLIENT_SERVICE_RELEASED”,除非客户端服务实例的SdClientServiceAutoRequired设置为true,否则该状态应设置为“SD_CLIENT_SERVICE_REQUESTED”

【规范】通过调用API Sd_Init()初始化服务发现模块后,所有配置的事件组应具有“SD_CONSUMED_EVENTGROUP_发布”状态,除非消耗事件组将“SdConsumed

EventGroupAutoRequired”设置为true,则一旦请求关联的客户端服务实例,状态应设置为“SD_CONSUMED_EVENTGROUP_REQUESTED”。

【规范】服务发现模块应存储服务器和客户端服务实例所引用的所有IP地址分配状态;

【规范】如果使用SD_CONSUMED_EVENTGROUP_REQUESTED调用Sd_ConsumedEventGroupSetState,而其客户端服务实例仍然被发布(SD_CLIENT_SERVICE_RELEASED),则将返回E_NO_OK

【规范】如果sd客户端服务设置为SD_CLIENT_SERVICE_RELEASED(通过Sd_ClientServiceSetState()或Sd_ServiceGroupStop()),而一个或多个事件组仍然被请求(SD_CONSUMED_EVENTGROUP_REQUESTED),服务发现应与SD_CONSUMED_EVENTGROUP_RELEASED首先用这些事件组调用

3.1.4 与SoAd的交互

【规范】服务发现模块应能够使用针对服务器和客户端服务实例的api SoAd_EnableRouting()、SoAd_DisableRouting()、SoAd_EnableSpecificRouting()和SoAd_DisableSpecificRouting()来启用/禁用SoAd模块内的路由组。

【规范】服务发现模块应能够使用API SoAd_IfSpecificRoutingGroupTransmit()触发初始事件的发送。

【规范】服务发现模块应能够参考每个服务实例/事件组的路由组)。请参见以下配置参数:

  • SdClientServiceActivationRef (in SdConsumedMethods)
  • SdConsumedEventGroupMulticastActivationRef
  • SdConsumedEventGroupTcpActivationRef
  • SdConsumedEventGroupUdpActivationRef
  • SdServerServiceActivationRef (in SdProvidedMethods)
  • SdEventActivationRef (in SdEventHandlerMulticast)
  • SdEventActivationRef (in SdEventHandlerTcp)
  • SdEventTriggeringRef (in SdEventHandlerTcp)
  • SdEventActivationRef (in SdEventHandlerUdp)
  • SdEventTriggeringRef (in SdEventHandlerUdp)

【规范】服务发现模块应能够参考每个服务实例/事件组的套接字连接和Socket连接组。请参见以下配置参数:

  • SdClientServiceTcpRef (Service Instance and Eventgroups)
  • SdClientServiceUdpRef (Service Instance and Eventgroups)
  • SdConsumedEventGroupMulticastGroupRef (Eventgroup)
  • SdServerServiceTcpRef (Service Instance and Eventgroups)
  • SdServerServiceUdpRef (Service Instance and Eventgroups)
  • SdMulticastEventSoConRef in SdEventHandlerMulticast (Eventgroup)

【规范】服务发现模块只能在分配了IP地址时调用SoAd_IfTransmit()。: Sd_LocalIpAddrAssignmentChg()已用当前状态TCPIP_IPADDR_STATE_ASSIGNED进行调用。

【规范】如果SoAd_IfTransmit()返回E_NOT_OK,则忽略。

【规范】如果适用以下所有条件,则应使用SoAd_ReleaseRemoteAddr()将每个通配符Socket连接重置为通配符:

  • 套接字连接的远程地址已由SD设置。
  • 客户机服务不再使用套接字连接。即没有收到要约,收到停止要约或TTL已过期。
  • 用户不再使用套接字连接。即,客户端已使用此套接字连接取消订阅所有事件组。如果由于达到SdEventHandlerMulticastThreshold而禁用,则不得套接字连接。

3.1.5 订阅事件组重试处理

订阅事件组重试机制是客户端服务的一个可选功能。如果一些/IP-SD消息丢,并且周期提供之间的间隔很大,以获得快速恢复,或者如果在两个循环提供之间请求一个事件组,则可以加快订阅。订阅事件组重试机制的定时行为可以根据客户端服务进行配置,并且必须与相应的服务器服务的定时行为相匹配。对于TLL(Sd服务器TTL)设置为0x FFFFFF和主阶段的周期延迟)设置为0的服务器服务,可以将订阅事件组重试设置为0xFF。这将意味着重试订阅一个事件组,因为事件组被设置为SD_CONSUMED_EVENTGROUP_REQUESTED,并且没有收到订阅事件组Ack。

3.2 报文格式

3.2.1 Entries Array

(1)Entry格式 1:服务Entry

(2)Entry格式 2:事件组Entry

 

3.2.2 Opotion Array

(1)配置Option

(2)IPv4单播

 

(3)IPv4组播

 

(5)IPv4 SD

 

(6)IPv6单播

 

(7)IPv6组播

 

(8)IPv6 SD

 

3.2.3 示例

 

3.3 服务发现条目

        ECUs应分发可用的服务实例和所需的服务实例,以及这些服务实例的证据组。为此目的,它们使用服务发现消息来交换条目。从而实现提供和查找服务,以及查找和订阅事件组。

3.3.1 服务查找相关的Entry

        这些要求对所有有关服务的条目都有效,包括类型为0x00、0x01、0x02和0x03的条目。目前,本规范中只定义了0x00和0x01类型的服务项。

(1)FindService

(2)OfferService

(3)StopOfferService

3.3.2 事件组相关的Entry

        以下要求适用于有关事件组的所有条目,包括类型为0x04、0x05、0x06和0x07的条目。目前,本规范中只定义了类型为0x06和0x07的事件组条目。

(1)SubscribeEventgroup

(2)StopSubscribeEventgroup

(3)SubscribeEventgroupAck

(4)SubscribeEventgroupNack

3.4 发送和接收消息

【规范】服务发现模块使用携带引用的TxPdu的SoAd_IfTransmit()API发送服务发现消息(提供、停止提供、查找,..)

【规范】服务发现模块通过API Sd_SoAdIfRxIndication()和配置项单实例实例RxPdu和单安装多实例RxPdu接收服务发现消息。接收到的远程地址必须保存在Sd_RxIndication的调用上下文中。

【规范】当接收到服务发现消息时,应忽略所有保留字段的值。

【规范】每次服务发现模块接收到SOME/IP-SD消息时,都必须检查该消息的一致性。这方面包括但不限于:

  • 验证SOME/IP-SD消息是否足够长以适合条目和选项数组(总长度= 12 +条目数组+选项数组长度)
  • 检查该条目是否引用了现有的选项。

如果收到了格式错误的消息,则应报告扩展生产错误SD_ E_MALFORMED_MSG。

3.5 服务器服务和事件处理程序的计时和重复

特别是在启动多个ECU后,服务发现的多播消息会带来过多消息导致ECU溢出的风险。因此,可以为服务发现配置一个合适的消息发送行为。

对于每个服务器服务实例,不同的阶段定义如图所示:

 

3.6 客户端服务和消费事件组的时间和重复

服务发现阶段允许最小化发送的服务发现消息的数量,同时允许在ECU启动时进行非常快的同步。

这种弱化可通过以下阶段实现:

 

3.7 错误分类

3.7.1 开发错误

 

3.7.2 运行错误

 

四、API接口

4.1 API定义

  1. Sd_Init
  2. Sd_GetVersionInfo
  3. Sd_ServerServiceSetState
  4. Sd_ClientServiceSetState
  5. Sd_ConsumedEventGroupSetState
  6. Sd_LocalIpAddrAssignmentChg
  7. Sd_SoConModeChg
  8. Sd_ServiceGroupStart
  9. Sd_ServiceGroupStop

4.2 回调接口

  1. Sd_RxIndication

4.3 调度接口

  1. Sd_MainFunction

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/553446.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Godot引擎 4.0 文档 - 循序渐进教程 - 使用信号

本文为Google Translate英译中结果,DrGraph在此基础上加了一些校正。英文原版页面: Using signals — Godot Engine (stable) documentation in English 使用信号 在本课中,我们将研究信号。它们是节点在发生特定事件时发出的消息&#xf…

S7-1200中通过MODBUS TCP客户端在一次请求中实现从服务器读写一个或多个保持性寄存器的具体方法

S7-1200中通过MODBUS TCP客户端在一次请求中实现从服务器读写一个或多个保持性寄存器的具体方法 TIA博途V17中增加了MODBUS TCP客户端功能码 23,可以在一次请求作业下实现从服务器读取和写入一个或多个保持性寄存器,这样省去了轮询的编程工作量,提高了工作效率,如下图所示,…

第三章 卷积神经网络

目录 一、CNN 基础二、CNN 进阶 卷积神经网络,Convolutinal Neural Network,CNN 在之前两章的由线性模型构成的神经网络都是全连接神经网络 一、CNN 基础 在之前全连接层处理二维图像的时候,直接将二维图像从 N 1 28 28 N \times 1 \t…

【DolphinScheduler 安装部署】DolphinScheduler调度系统如何安装部署?

要安装DolphinScheduler(以下简称DS)调度系统,请按照以下步骤进行操作: 系统要求: 确保您的计算机满足DS的最低系统要求,例如操作系统版本、内存和处理器要求等。DS通常在Linux系统上运行良好。 下载DS安装…

k8s部署mongodb副本高可用集群

此版本的NFS为单点,仅为练习使用,生产环境建议使用cephfs的卷类型,避免单点。或者通过keepalived加Sersync的方案对NFS作容灾处理即可用于生产环境。当然,对于开发或测试环境,方便起见,直接使用单点的NFS加…

Oracle OCP 和MySQL OCP 考试完成后查询成绩和下载证书的步骤

我的一些学员考完Oracle OCP和MySQL OCP不知道如何查看自己的考试成绩和证书,姚远老师现在详细说明具体的操作步骤,一共8步。 关于号主,姚远: Oracle ACE(Oracle和MySQL数据库方向)Oracle MAA 大师华为云…

基于Java+Springmvc+vue+element实现大学生科技创新创业项目管理系统

基于JavaSpringmvcvueelement实现大学生科技创新创业项目管理系统 博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源…

【校园网设计】基于ensp的跨地区的校园网组网方案

本博客是基于模拟器ensp的校园网组网方案,有总校区和分校区,主要用了vlan划分、dhcp、nat、ospf、acl、bgp等技术。首先说一下本博客的局限性: 总校区和分校区之间只是使用的传统的bgp建立连接,这样可以在运营商上看到内网的明细&…

Squid 代理服务器的应用(传统代理、透明代理、ACL控制列表、sarg日志分析、反向代理)

一、Squid代理服务器的概述 squid 作为一款服务器代理工具,可以缓存网页对象,减少重复请求,从而达到加快网页访问速度,隐藏客户机真实IP,更为安全。 Squid主要提供缓存加速、应用层过滤控制的功能 1、squid代理的工…

Android Studio SDK无法勾选安装的解决方案

问题描述 1、在初次安装好Android Studio后,会启动AS,出现经典的Unable to access Android SDK add-on list报错,点Cancel即可。网上的解决方法分为两种:(1)设置Proxy为教育网(2)在…

Linux 下安装SonarQube (版本sonarqube7.6)

公司的虚拟环境坏了,sonarqube需要重新安装。简单记录安装过程和遇到的问题。 相关环境信息 CentOS Linux release 7.6.1810 (Core)MySQL 5.7.30sonarqube7.6JDK 11.0.2 一 安装Sonar前需要知道 1为什么要代码清洁 软件的核心是代码。代码不仅指导业务行为&#…

陈丹琦团队最新力作:上下文学习在上下文“学到”了什么?

深度学习自然语言处理 原创作者 | 鸽鸽 这段时间in-context learning真的很火,陈丹琦组最新的两篇文章都是ICL相关,今天我们拜读其中一篇:丹琦的硕士生、纽约大学准博士生Jane Pan的ACL小短文。 大佬的学生会做出怎样的科研示范呢&#xff1f…

单位、家庭建筑物电气、电子设备防雷举措

前 言 在现实的学习、工作、生活中,有时会面对自然灾害、重特大事故、环境公害及人为破坏等突发事件,为了控制事故的发展,就不得不需要事先制定应急预案。那要怎么制定科学的应急预案呢﹖下面是小编为大家整理的单位、住宅建筑物、电子电气防…

Flink有状态计算的状态容错

状态容错 State Fault Tolerance 首先来说一说状态容错。Flink 支持有状态的计算,可以把数据流的结果一直维持在内存(或 disk)中,比如累加一个点击数,如果某一时刻计算程序挂掉了,如何保证下次重启的时候&…

VM600 IOCN 输入/输出接口卡

用于CPUM卡的VM600 IOCN输入/输出卡 CPUM卡的输入/输出(接口)卡一个主以太网连接器(8P8C (RJ45)),用于与VM600 MPSx软件和/或Modbus TCP和/或PROFINET通信进行通信一个辅助以太网连接器(8P8C (RJ45)),用于冗余Modbus TCP通信一个主要串行连接器(6P6C (R…

LightningChart JS 4.0.x Crack

Lightning-fast, interactive & responsive 2D & 3D JavaScript charts. Next Generation, World’s Fastest JS Charts Getting Started with LightningChart JS There’s multiple ways to get started with our JS charting library. You can install the package…

CMake Practice 学习笔记二---子目录、安装

让前面的Hello World更像一个工程: 为工程添加一个子目录src,用来放置工程源代码;添加一个子目录doc,用来反之这个工程的文档hello.txt;在工程目录添加文本文件COPYRIGHT,README;在工程目录添加…

Linux常见指令(3)

Linux常见指令 ⑶ date指令引入描述用法例子时间时间戳 cal指令描述用法例子 find指令描述用法例子补充which指令whereis指令 grep指令描述用法例子grep 对文件的操作grep 对目录的操作 补充 打包压缩 和 解压解包zip && unzip描述用法例子对文件的操作对目录的操作 ta…

苹果手机没有备份怎么恢复数据?数据恢复,轻松解决!

案例:苹果手机没有进行过iTunes和iCloud备份,手机还原后数据都被抹掉了,还能恢复数据吗? 【求问各位大神,我几天前把苹果手机的数据还原了,也没有提前进行过数据的备份。现在想起来之前微信上有一些重要的…

uniapp使用uView框架,后端传16位数以上时出现精度缺失的情况

1、使用 json-bigint,失败 2、使用 config 里的 getTask,失败 3、修改 dataType,成功 原因: 通过ajax请求回来的数据在response和preview两种状态显示的是不同的。response中的看到的数据格式其实是字符串(ajax请求…