UDS 诊断服务系列文章目录
诊断和通信管理功能单元
UDS 诊断 - DiagnosticSessionControl(诊断会话控制)(0x10)服务
UDS 诊断 - ECUReset(ECU重置)(0x11)服务
UDS 诊断 - SecurityAccess(安全访问)(0x27)服务
UDS 诊断 - CommunicationControl(通信控制)(0x28)服务
UDS 诊断 - TesterPresent(测试仪保活)(0x3E)服务
UDS 诊断 - AccessTimingParameter(访问计时参数)(0x83)服务
UDS 诊断 - SecuredDataTransmission(受保护的数据传输)(0x84)服务
UDS 诊断 - ControlDTCSetting(控制DTC设置)(0x85)服务
UDS 诊断 - ResponseOnEvent(基于事件响应)(0x86)服务
UDS 诊断 - LinkControl(链路控制)(0x87)服务
数据传输功能单元
UDS 诊断 - ReadDataByIdentifier(按标识符读取数据)(0x22)服务
UDS 诊断 - ReadMemoryByAddress(按地址读取内存)(0x23)服务
UDS 诊断 - ReadScalingDataByIdentifier(按标识符读取换算数据)(0x24)服务
UDS 诊断 - ReadDataByPeriodicIdentifier(按周期性标识符读取数据)(0x2A)服务
文章目录
- UDS 诊断服务系列文章目录
- 一、服务说明
- 二、请求消息
- 1.请求消息定义
- 2. 请求消息数据参数定义
- 1. 下表为 transmissionMode 参数的定义
- 三、肯定响应消息
- 1. 肯定响应消息定义
- 四、支持的NRC
- 五、示例
- 1. 假设
- 2. 示例 1:以中等速率读取多个 periodicDataIdentifier(周期性数据标识符)0xE3 和 0x24
- 3. 示例 2:0x2A 服务的周期性调度速率的图例和表例
- 1. 0x2A 服务示例概述
- 2. 示例:以中等速率读取多个 periodicDataldentifier(周期性数据标识符)0xE3 和 0x24
- 4. 示例 3:0x2A 服务的周期性调度速率的图例和表例
- 1. 0x2A 服务示例概述
- 2. 以不同周期性速率读取多个 periodicDataldentifier(周期性数据标识符)
- 5. 示例 4:0x2A 服务的周期性调度速率表例
- 1. 0x2A 服务示例概述
- 6. 示例 5:0x2A 服务的周期性调度速率表例
- 1. 0x2A 服务示例概述
一、服务说明
0x2A 服务允许客户端请求对服务器中通过一个或多个 periodicDataIdentifiers(周期性数据标识符)所识别的数据记录值进行周期性传输。
客户端请求消息包含一个或多个识别服务器所维护的数据记录的单字节 periodicDataIdentifier(周期性数据标识符)值。periodicDataIdentifier(周期性数据标识符)表示为此服务所保留的 DID 范围之外的数据标识符的低字节(0xF2XX)。
例如,此服务中所使用的 periodicDataIdentifier(周期性数据标识符)0xE3 为 DID 0xF2E3。
dataRecord(数据记录)的格式和定义应由车辆制造商规定,并且可包含模拟输入和输出信号、数字输入和输出信号、内部数据,以及系统状态信息(若服务器支持)。
接收到 0x2A 的请求而非 stopSending(停止发送)后,服务器应检查是否满足执行服务的适当条件。
给定时间内应仅支持单一 transmissionMode(传输模式)的 periodicDataIdentifier(周期性数据标识符)。应在接收到请求消息之后更改 periodicDataIdentifier(周期性数据标识符)的调度,并按照相同 periodicDataIdentifier(周期性数据标识符)的新调度安排设置 transmissionMode 参数。若车辆制造商要求,则应支持不同 periodicDataIdentifier(周期性数据标识符)的多个调度安排。
若满足适当的条件,则服务器应传输仅包括服务器标识符的肯定响应消息。一旦通过肯定响应接受了初始请求消息,服务器就不得传输否定响应消息。
接受初始肯定响应消息后,服务器应访问 periodicDataIdentifier(周期性数据标识符)参数所指定的记录的数据元素,并就包含管理 dataRecord 参数的每个 periodicDataIdentifier(周期性数据标识符)在单独的周期性数据响应消息中传输这些数据元素的值。
接受初始肯定响应消息后,为了向客户端传输 periodicDataIdentifier(周期性数据标识符)数据二定义的单独周期性数据响应消息应包括 periodicDataIdentifier(周期性数据标识符)及其数据,但不包括肯定相应服务标识符。
特定 transmissionMode 的已编档周期性速率被定义为具有相同 periodicDataIdentifier(周期性数据标识符)的任意两次连续响应消息的间隔时间,再次时间内,仅调度单一 periodicDataIdentifier(周期性数据标识符)。若同事调度多个 periodicDataIdentifier(周期性数据标识符),则相同 periodicDataIdentifier(周期性数据标识符)的有效期将随一下设计参数二变化:
- 周期性调度器的调用率;
- 按照调度器调用所分配的可用协议特定周期性数据响应消息地址信息标识符(例如,CAN 的 CAN 标识符)的数目;
- 可以并行定义待同事传输的 periodicDataIdentifier(周期性数据标识符)的数目。
若同事传输多个 periodicDataIdentifier(周期性数据标识符),则这些参数值将影响相同 periodicDataIdentifier(周期性数据标识符)的有效期的增加范围。因此,前文提及的所有设计参数应均由车辆制造商指定。每次调用周期性调度器时,应确定所有 periodicDataIdentifier(周期性数据标识符)是否准备好传输。
注 周期性速率是周期性调度器调用率的整数倍数。
例如,两个独特的 ECU 实现过程可支持周期性速率为 10ms 的快速 transmissionMode 和单个具有唯一性的周期性数据响应消息的地址信息标识符。若第一个实现过程每 10ms 调用周期性调度器,则相同 periodicDataIdentifier(周期性数据标识符)的间隔时间将可能增至 20ms(调度两个 periodicDataIdentifier(周期性数据标识符)的情况下)和 40ms (调度四个 periodicDataIdentifier(周期性数据标识符)的情况下)。若第二个实现过程每 5ms 调用周期性调度器,则相同 periodicDataIdentifier(周期性数据标识符)的间隔时间可能保持为 10ms(调用两个)和增至 20ms(调用四个)。
接收到包括 transmissionMode stopSending 的 0x2A 请求后,服务器应停止请求消息中所含的 periodicDataIdentifier(周期性数据标识符)的周期性传输,或者停止传输任何 periodicDataIdentifier(周期性数据标识符)(请求消息中未指定特定标识符的情况下)。此 transmissionMode 的响应消息仅包含服务器标识符。
如车辆制造商和系统供应商所商定的,服务器可限制同时支持的 periodicDataIdentifier(周期性数据标识符)的数目。超过可以同时支持的 periodicDataIdentifier(周期性数据标识符)的最大数目应导致单一否定响应,并且,应不调度该请求中的任何 periodicDataIdentifier(周期性数据标识符)。不允许在单一请求消息中重复相同的 periodicDataIdentifier(周期性数据标识符),并且,服务器应忽略所有这些标识符,客户端另行指定的 periodicDataIdentifier(周期性数据标识符)除外。
二、请求消息
1.请求消息定义
字节 | 参数名称 | 字节值 | Cvt |
---|---|---|---|
#1 | ReadDataByPeriodicIdentifier(按周期性标识符读取数据)请求SID | 0x2A | M |
#2 | transmissionMode(传输模式) | 0x00 - 0xFF | M |
#3 | periodicDataIdentifier(周期性数据标识符)[] 第 1 个 | 0x00 - 0xFF | C |
. . | . . | . . | . . |
#m+2 | periodicDataIdentifier(周期性数据标识符)[] 第 m 个 | 0x00 - 0xFF | U |
C:若 transmissionMode 等同于 sendAtSlowRate(慢速发送)、sendAtMediumRate(中速发送)或 sendAtFastRate(快速发送),则请求消息中必须存在 periodicDataIdentifier(周期性数据标识符)。若 transmissionMode 等同于 stopSending,则要不不存在 periodicDataIdentifier(周期性数据标识符)以便停止所有已调度的 periodicDataIdentifier(周期性数据标识符),要么客户端可以明确指定一个或多个待停止的 periodicDataIdentifier(周期性数据标识符)。
2. 请求消息数据参数定义
定义 |
---|
transmissionMode(传输模式) 此参数确定了服务器待使用的请求 periodicDataIdentifier(周期性数据标识符)的传输速率。 |
dataIdentifier(数据标识符)(第 1 个至第 m 个) 此参数识别客户端当前所请求的服务器数据记录。应可在单一请求中请求多个 periodicDataIdentifier(周期性数据标识符)。 |
1. 下表为 transmissionMode 参数的定义
字节值 | 说明 |
---|---|
0x00 | 保留 |
0x01 | sendAtSlowRate(慢速发送) 本参数规定服务器须以较慢速度传输请求 dataRecord 信息以响应请求信息(其中,待发送响应数量 = 待发送响应最大数量)。各车辆制造商采用 transmissionMode 慢速发送参数重复率不同,且服务器应提前确定。 |
0x02 | sendAtMediumRate(中速发送) 本参数规定服务器须以中等速度传输请求 dataRecord 信息以响应请求信息(其中,待发送响应数量 = 待发送响应最大数量)。各车辆制造商采用 transmissionMode 中速发送参数重复率不同,且服务器应提前确定。 |
0x03 | sendAtFastRate(快速发送) 本参数规定服务器须以较快速度传输请求 dataRecord 信息以响应请求信息(其中,待发送响应数量 = 待发送响应最大数量)。各车辆制造商采用 transmissionMode 快速发送参数重复率不同,且服务器应提前确定。 |
0x04 | stopSending(停止发送) 服务器停止定期 / 重复传输肯定响应消息。注意:如果 transmissionMode = stopSending,将参数待发送响应最大数量设为 0x01,否则,可能无法服务器操作。 |
0x05 - 0xFF | 保留 |
三、肯定响应消息
1. 肯定响应消息定义
必须区分表明服务器接受服务的初始肯定响应消息及包括 periodicDataIdentifier(周期性数据标识符)数据的和后续周期性数据响应消息。
下表定义了服务器接受请求是需传输的初始肯定响应消息。
字节 | 参数名称 | 字节值 |
---|---|---|
#1 | ReadDataByPeriodicIdentifier(按周期性标识符读取数据)响应SID | 0x6A |
按照请求的 transmission 参数确定的速率周期性传输 periodicDataIdentifier(周期性数据标识符)数据。
接受初始肯定响应后,针对请求中所支持的每个 periodicDataIdentifier(周期性数据标识符),服务器应发送下文所定义的单一周期性数据响应消息。
下表确定了周期性数据响应消息数据的定义。
字节 | 参数名称 | 字节值 |
---|---|---|
#1 | periodicDataIdentifier(周期性数据标识符) | 0x00 - 0xFF |
#2 . . #k+2 | dataRecord[] = [
. . data#k ] | 0x00 - 0xFF . . 0x00 - 0xFF |
定义 |
---|
periodicDataIdentifier(周期性数据标识符) 此参数引用请求消息中的 periodicDataIdentifier(周期性数据标识符)。 |
dataRecord(数据记录) 此参数用在 0x2A 服务的肯定响应消息中,用以向客户端提供所请求的数据记录值。 |
四、支持的NRC
NRC | 说明 |
---|---|
0x13 | 消息长度不正确或格式无效 |
0x22 | 条件不正确 若不满足服务器的运行条件而无法执行所需的操作,则应发送此 NRC,例如,若客户端请求不同的 transmissionMode 的 periodicDataIdentifier(周期性数据标识符),但服务器不同时支持多个 transmissionMode,则会出现上述情况。 |
0x31 | 请求超过限值 以下情况下,应发送此 NRC: 装置不支持所请求的任何 periodicDataIdentifier(周期性数据标识符)值; 当前会话不支持所请求的任何 periodicDataIdentifier(周期性数据标识符); 装置不支持所指定的 transmissionMode; 尚未分配所请求的 dynamicDefinedDataIdentifier(已动态定义的数据标识符); 客户端超过了允许同时调度的 periodicDataIdentifier(周期性数据标识符)的最大数目。 |
0x33 | 安全访问被拒绝 若至少有一个 periodicDataIdentifier(周期性数据标识符)已受保护,并且服务器未处于解锁状态,则应发送此 NRC。 |
下图为 0x2A 服务的否定响应码的处理。
图例
1. 若 TM = stopSending(SI + TM),则最小长度为 2 个字节;若 TM <> stopSending,则最小长度为 3 个字节(SI + TM + pDID);最大长度为 1 个字节(SI)+ 1 个字节(TM)+ +n 个字节(pDID)。
五、示例
1. 假设
以下各示例展示了 0x2A 服务的运行方式。不论服务器处于何种状态,客户端可随时请求一个periodicDataIdentifier(周期性数据标识符)数据。
下文中的 periodicDataIdentifier(周期性数据标识符)示例因动力系统装置(如,发送机控制模块)而异。
2. 示例 1:以中等速率读取多个 periodicDataIdentifier(周期性数据标识符)0xE3 和 0x24
本示例展示了利用一个单一请求来请求多个 DID 的过程(其中 periodicDataIdentifier(周期性数据标识符)0xE3(= DID 0xF2E3))包含发送机冷却液温度、油门位置、发送机转速、车速传感器,而 periodicDataIdentifier(周期性数据标识符)0x24(= DID 0xF224)包含蓄电池正电压、进气歧管绝对压力、空气质量流量、车辆气压以及计算负载值)。
客户端请求以中等速率传输并在检索周期性数据一定时间后仅停止传输 periodicDataIdentifier(周期性数据标识符)0xE3。
step1:请求周期性传输 periodicDataIdentifier(周期性数据标识符)- 初始肯定响应消息 - 后续肯定响应消息1 - 后续肯定响应消息2
req 2A 02 E3 24
resp 6A
resp E3 (periodicDataIdentifier#1)
A6 66 07 50 00 (dataRecord[data#--#5] = {ECT,TP,RPM,RPM,VSS})
resp 24 (periodicDataIdentifier#2)
8C 20 1A 63 4A (dataRecord[data#--#5] = {B+,MAP,MAF,BARO,LOAD})
// 服务器以适用的中等速率传输上述后续响应消息。
step2:停止传输 periodicDataIdentifier(周期性数据标识符)
req 2A 04 E3
resp 6A
// 服务器仅停止传输 periodicDataIdentifier(周期性数据标识符)0xE3。服务器仍以中等速率传输 periodicDataIdentifier(周期性数据标识符)0x24。
3. 示例 2:0x2A 服务的周期性调度速率的图例和表例
1. 0x2A 服务示例概述
本分条款介绍了调度的周期性数据示例,该示例中包含了 0x2A 服务的一个图例和一个表例。
示例中图解了客户端和服务器应用程序之间传输的消息(请求 / 响应),并以表格的形式说明了服务器周期性调度器及其变量的可能的实现过程,以及每次执行用以校验周期性调度器的背景功能时这些变量是如何变化的。
下文示例中确定了如下实现过程:
— 较快周期性速率为 25ms,而中等周期性速率为 300ms。
— 每 12.5ms 校验一次周期性调度器,这意味着在此期间会调用(轮询)周期性调度器的背景功能。每次调用背景周期性调度器时,其会遍历调度器条目,直至发送了一个单一周期性标识符或调度器中的所有标识符均检验完毕且没有标识符已准备好传输。在示例实现过程中,表中的 “周期性调度器传输索引” 变量是遍历调度器以检查是否有标识符已准备好传输时所校验的第一个索引。
— 可并发调度的 periodicDataldentifier(周期性数据标识符)的最大数量为 4 个。
— 已分配一个独特的周期性数据响应消息的地址信息 ID。
由于周期性调度器轮询速率为 12.5ms,因此,每发送一个较快速率的 periodicDataldentifier(周期性数据标识符)时,较快速率循环计数器可能会设为 2(该值基于调度值(25ms)除以周期性调度器轮询速率(12.5 ms)或 25 / 12.5),而每发送一条中等速率的 periodicDataldentifier(周期性数据标识符)时,中等速率循环计数器可能会重置为 24(调度速率除以周期性调度器轮询速率或 300 / 12.5)。
2. 示例:以中等速率读取多个 periodicDataldentifier(周期性数据标识符)0xE3 和 0x24
当 t = 0.0ms 时,客户端开始发送请求以中等速率(300ms)调度 2 个 periodicDataldentifier(周期性数据标识符)(0xF2E3 和 0xF224)。在本示例中,服务器会接收该请求并在第一次 t = 25.0ms 时执行周期性调度器的背景功能。
图例
1. 0x2A(0x2A、0x02、0xF2E3 以及 0xF224)的请求消息(sendAtMediumRate(以中等速率发送))
2. 0x2A 的肯定响应消息(0x6A,不包含数据)
3. 0x2A 的周期性数据响应消息(0xE3、0xXX、… 以及 0xXX)
4. 0x2A 的周期性数据响应消息(0x24、0xXX、… 以及 0xXX)
下表说明了服务器中周期性调度器可能的实现过程。该表中包含了周期性调度器变量,并说明了每次执行用以校验周期性调度器的背景功能时这些变量是如何变化的。
时间(ms) | 周期性调度器传输索引 | 已发送的周期性标识符 | 周期性调度器循环编号 | 调度器[0]传输计数 | 调度器[1]传输计数 |
---|---|---|---|---|---|
25,0 | 0 | 0xE3 | 1 | 0 -> 24 | 0 |
37,5 | 1 | 0x24 | 2 | 23 | 0 -> 24 |
50,0 | 0 | 无 | 3 | 22 | 23 |
62,5 | 0 | 无 | 4 | 21 | 22 |
75,0 | 0 | 无 | 5 | 20 | 21 |
87,5 | 0 | 无 | 6 | 19 | 20 |
100,0 | 0 | 无 | 7 | 18 | 19 |
112,5 | 0 | 无 | 8 | 17 | 18 |
125,0 | 0 | 无 | 9 | 16 | 17 |
137,5 | 0 | 无 | 10 | 15 | 16 |
150,0 | 0 | 无 | 11 | 14 | 15 |
162,5 | 0 | 无 | 12 | 13 | 14 |
175,0 | 0 | 无 | 13 | 12 | 13 |
187,5 | 0 | 无 | 14 | 11 | 12 |
200,0 | 0 | 无 | 15 | 10 | 11 |
212,5 | 0 | 无 | 16 | 9 | 10 |
225,0 | 0 | 无 | 17 | 8 | 9 |
237,5 | 0 | 无 | 18 | 7 | 8 |
250,0 | 0 | 无 | 19 | 6 | 7 |
262,5 | 0 | 无 | 20 | 5 | 6 |
270,0 | 0 | 无 | 21 | 4 | 5 |
287,5 | 0 | 无 | 22 | 3 | 4 |
300,0 | 0 | 无 | 23 | 2 | 3 |
312,5 | 0 | 无 | 24 | 1 | 2 |
325,0 | 0 | 0xE3 | 25 | 0 -> 24 | 1 |
337,5 | 1 | 0x24 | 26 | 23 | 0 -> 24 |
350,0 | 0 | 无 | 27 | 22 | 23 |
362,5 | 0 | 无 | 28 | 21 | 22 |
4. 示例 3:0x2A 服务的周期性调度速率的图例和表例
1. 0x2A 服务示例概述
本分条款介绍了一个调度的周期性数据示例,该示例中包含了 0x2A 服务的一个图例和一个表例。
该示例基于 示例 2。示例中图解了客户端和服务器应用程序之间传输的消息(请求 / 响应),并以表格的形式说明了服务器周期性调度器及其变量的可能的实现过程,以及每次执行用以校验周期性调度器的背景功能时这些变量是如何变化的。
2. 以不同周期性速率读取多个 periodicDataldentifier(周期性数据标识符)
在本示例中,以较快周期性速率(25ms)调度了三个 periodicDataldentifier(周期性数据标识符)(简单而言为 0x01、0x02 以及 0x03),然后针对将以中等周期性速率(300ms)调度的一个单一 periodicDataldentifier(周期性数据标识符)(0x04)发送了另一个请求。在本示例中,服务器接收了第一条 0x2A 服务请求(1),发送了一条不含任何周期性数据的肯定响应(2),以及针对第一次 t = 25.0ms 执行了周期性调度器的背景功能(3)。当收到第二条 0x2A 服务请求(5)后,服务器会发送一条不含任何周期性数据的肯定响应(7)并开始以调度的中等速率(300ms)在 t = 62.5ms(8)时执行周期性调度器的背景功能。
图例
1. 0x2A(0x2A、0x03、0xF201、0xF202 以及 0xF203)的请求消息(sendAtFastRate(以较快速率发送))
2. 0x2A 的肯定响应消息(0x6A,不包含数据)
3. 0x2A 的周期性数据响应消息(0x01、0xXX、… 以及 0xXX)
4. 0x2A 的周期性数据响应消息(0x02、0xXX、… 以及 0xXX)
5. 0x2A(0x2A、0x02 以及 0xF204)的请求消息(sendAtMediumRate(以中等速率发送))
6. 0x2A 的周期性数据响应消息(0x03、0xXX、… 以及 0xXX)
7. 0x2A 的肯定响应消息(0x6A,不包含数据)
8. 0x2A 的周期性数据响应消息(0x04、0xXX、… 以及 0xXX)
下表说明了服务器中周期性调度器可能的实现过程。该表中包含了周期性调度器变量,并说明了每次执行用以校验周期性调度器的背景功能时这些变量是如何变化的。
时间(ms) | 周期性调度器传输索引 | 已发送的周期性标识符 | 周期性调度器循环编号 | 调度器[0]传输计数 | 调度器[1]传输计数 | 调度器[2]传输计数 | 调度器[3]传输计数 |
---|---|---|---|---|---|---|---|
25,0 | 0 | 0x01 | 1 | 0 -> 2 | 0 | 0 | 不适用 |
37,5 | 1 | 0x02 | 2 | 1 | 0 -> 2 | 0 | 不适用 |
50,0 | 2 | 0x03 | 3 | 0 | 1 | 0 -> 2 | 0 |
62,5 | 3 | 0x04 | 4 | 0 | 0 | 1 | 0 -> 24 |
75,0 | 0 | 0x01 | 5 | 0 -> 2 | 0 | 0 | 23 |
87,5 | 1 | 0x02 | 6 | 1 | 0 -> 2 | 0 | 22 |
100,0 | 2 | 0x03 | 7 | 0 | 1 | 0 -> 2 | 21 |
112,5 | 3 | 0x01 | 8 | 0 -> 2 | 0 | 1 | 20 |
125,0 | 1 | 0x02 | 9 | 1 | 0 -> 2 | 0 | 19 |
137,5 | 2 | 0x03 | 10 | 0 | 1 | 0 -> 2 | 18 |
150,0 | 3 | 0x01 | 11 | 0 -> 2 | 0 | 1 | 17 |
162,5 | 1 | 0x02 | 12 | 1 | 0 -> 2 | 0 | 16 |
175,0 | 2 | 0x03 | 13 | 0 | 1 | 0 -> 2 | 15 |
187,5 | 3 | 0x01 | 14 | 0 -> 2 | 0 | 1 | 14 |
200,0 | 1 | 0x02 | 15 | 1 | 0 -> 2 | 0 | 13 |
212,5 | 2 | 0x03 | 16 | 0 | 1 | 0 -> 2 | 12 |
225,0 | 3 | 0x01 | 17 | 0 -> 2 | 0 | 1 | 11 |
237,5 | 1 | 0x02 | 18 | 1 | 0 -> 2 | 0 | 10 |
250,0 | 2 | 0x03 | 19 | 0 | 1 | 0 -> 2 | 9 |
262,5 | 3 | 0x01 | 20 | 0 -> 2 | 0 | 1 | 8 |
270,0 | 1 | 0x02 | 21 | 1 | 0 -> 2 | 0 | 7 |
287,5 | 2 | 0x03 | 22 | 0 | 1 | 0 -> 2 | 6 |
300,0 | 3 | 0x01 | 23 | 0 -> 2 | 0 | 1 | 5 |
312,5 | 1 | 0x02 | 24 | 1 | 0 -> 2 | 0 | 4 |
325,0 | 2 | 0x03 | 25 | 0 | 1 | 0 -> 2 | 3 |
337,5 | 3 | 0x01 | 26 | 0 -> 2 | 0 | 1 | 2 |
350,0 | 1 | 0x02 | 27 | 1 | 0 -> 2 | 0 | 1 |
362,5 | 2 | 0x03 | 28 | 0 | 1 | 0 -> 2 | 0 |
375,0 | 3 | 0x04 | 29 | 0 | 0 | 1 | 0 -> 24 |
387,5 | 0 | 0x01 | 30 | 0 -> 2 | 0 | 0 | 23 |
5. 示例 4:0x2A 服务的周期性调度速率表例
1. 0x2A 服务示例概述
本分条款介绍了调度的周期性数据示例,该示例中包含了 0x2A 服务的一个表例。该示例包含一个表格,表中说明了服务器周期性调度器及其变量的可能的实现过程,以及每次执行用以校验周期性调度器的背景功能时这些变量是如何变化的。
下例中确定了以下信息:
— 较快周期性速率为 10ms。
— 每 10ms 校验一次周期性调度器,这意味着在此期间会调用(轮询)周期性调度器的背景功能。
— 可并发调度的 periodicDataldentifier(周期性数据标识符)的最大数量为16个。
— 已分配两个独特的周期性数据响应消息的地址信息 ID。
由于周期性调度器轮询速率为 10ms,因此每发送一个较快速率 periodicDataldentifier(周期性数据标识符)时,较快速率循环计数器可能会设为 1(该值基于调度速率(10ms)除以周期性调度器轮询速率(10ms))。
当 t = 0.0ms 时,客户端开始发送请求以较快周期性速率(10ms)调度2个 periodicDataldentifier(周期性数据标识符)(简单而言为 0x01 和 0x02)。在本示例中,服务器会接收该请求并在第一次 t = 10ms 时执行周期性调度器的背景功能。
下表为周期性调度器表。
时间(ms) | 响应消息 ID 数 | 已发送的周期性标识符 | 周期性调度器循环编号 |
---|---|---|---|
10 | 1 | 0x01 | 1 |
10 | 2 | 0x02 | 1 |
20 | 1 | 0x01 | 2 |
20 | 2 | 0x02 | 2 |
30 | 1 | 0x01 | 3 |
30 | 2 | 0x02 | 3 |
40 | 1 | 0x01 | 4 |
40 | 2 | 0x02 | 4 |
50 | 1 | 0x01 | 5 |
50 | 2 | 0x02 | 5 |
60 | 1 | 0x01 | 6 |
60 | 2 | 0x02 | 6 |
70 | 1 | 0x01 | 7 |
70 | 2 | 0x02 | 7 |
80 | 1 | 0x01 | 8 |
80 | 2 | 0x02 | 8 |
90 | 1 | 0x01 | 9 |
90 | 2 | 0x02 | 9 |
100 | 1 | 0x01 | 10 |
100 | 2 | 0x02 | 10 |
6. 示例 5:0x2A 服务的周期性调度速率表例
1. 0x2A 服务示例概述
本分条款使用了与示例 4 中相同的假设。在本示例中,响应消息集中请求的 periodicDataldentifier(周期性数据标识符)比独特周期性数据响应消息地址信息 ID 多。
当 t = 0.0ms 时,客户端开始发送请求以较快周期性速率(10ms)调度3个 periodicDataldentifier(周期性数据标识符)(简单而言为 0x01、0x02 以及 0x03)。在本示例中,服务器会接收该请求并在第一次 t = 10ms 时执行周期性调度器的背景功能。
下表为周期性调度器表。
时间(ms) | 响应消息 ID 数 | 已发送的周期性标识符 | 周期性调度器循环编号 |
---|---|---|---|
10 | 1 | 0x01 | 1 |
10 | 2 | 0x02 | 1 |
20 | 1 | 0x03 | 2 |
20 | 2 | 0x01 | 2 |
30 | 1 | 0x02 | 3 |
30 | 2 | 0x03 | 3 |
40 | 1 | 0x01 | 4 |
40 | 2 | 0x02 | 4 |
50 | 1 | 0x03 | 5 |
50 | 2 | 0x01 | 5 |
60 | 1 | 0x02 | 6 |
60 | 2 | 0x03 | 6 |
70 | 1 | 0x01 | 7 |
70 | 2 | 0x02 | 7 |
80 | 1 | 0x03 | 8 |
80 | 2 | 0x01 | 8 |
90 | 1 | 0x02 | 9 |
90 | 2 | 0x03 | 9 |
100 | 1 | 0x01 | 10 |
100 | 2 | 0x02 | 10 |