1.读取数据(周期标识符)2A服务
此服务允许诊断工具请求读取ECU中由一个或多个周期数据标识符(periodic Data Identifier)标识 的周期发送的数据记录值。
客户端请求报文中包含了一个或者多个 1 字节型的周期标识符(periodicDataIdentifier)的值,其标识了在服务端所维护的数据记录。周期标识符(periodicDataIdentifier)是数据标识符(DID)的低字节,0xF200 - 0xF2FF 范围的 DID,被用来表示周期标识符,比如数据标识符(DID) 0xF2E3 中周期标识符(periodicDataIdentifier) 为 0xE3。
服务请求报文格式:
参数 periodicDataIdentifier (#1 to #m)标识了客户端正在请求服务端的数据记录,单个请求报文中可以请求多个 periodicdataidentifier。该参数 仅包含 DID 的低字节即可。例如请求 0xF2E3 的数据,该参数为 0xE3。
参数 transmissionMode 标识了服务端要使用的请求 periodicDataIdentifiers 的传输速率,其传输速率详见下表。
服务响应包括初始响应、周期性数据发送: 初始响应:
周期性数据发送:
2.配置实战
例如 2A 服务的需求如下:支持 2A 服务,2A 服务不需要安全解锁访问,也不需要在会话下访问;DID 0xF2F4 属于 2A 服务,其数据长度为 2,不需要安全解锁访问,也不需要在会话下访问;2A 服务一次能够 读取的最多的 DID 个数为 2;可以同时调度的周期 DID 最大个数为 5;0x2A 服务 transmissionMode 为 0x03(“sendAtFastRate”) 的 传 输 速 率 为0.1, 0x02(“sendAtMediumRate”) 时 的 传 输 速 率 为 0.2 , 0x01 (“sendAtSlowRate”)时的传输速率为 0.25。配置如下:
2.1DcmDsdServiceTables 的配置
DcmDsdSidTabServiceId 为 0x2A,配置 2A 服务;
DcmDsdSidTabSubfuncAvail 不勾选,不支持抑制响应(没有子服务);
DcmDsdSidTabSecurityLevelRef 不配置,2A 服务不需要安全访问等级;
2.2DcmDspDatas 的配置
DID 的配置如下:
1. DcmDspDataConditionCheckReadFnc,2A 服务条件的判断回调函数,如果该 DID 在 2A 服务需要判断某些条件时,需要配置该回调函数,并在该回调函数填写响应的条件判断,这个目前用不到先不配置。
2. DcmDspDataConditionCheckReadFncUsed ,生成条件判断回调函数,目前用不到配置为false。
3. DcmDspDataReadDataLengthFnc 读取 DID的长度的回调函数,项目目前用不到未配置,
4. DcmDspDataReadFnc 配置读取 DID 信息的回调函数,未配置,目前项目采用RTE方式读取,后续22服务会讲到。
5. DcmDspDataSize 为 2,该 DID 的数据长度为 2 字节;
6. DcmDspDataType 为 UINT8,目前只支持 UINT8 数据类型;
7.DcmDspDataUsePort:目前未把DID存储到NVM中,因此配为USE_DATA_SENDER_RECEIVER
其余未用到的可不配置。
2.3DcmDspDids 的配置
1. DcmDspDidIdentifier:就是 DID 号。
2. DcmDspDidUsePort:目前的版本好像只支持 USE_DATA_ELEMENT_SPECIFIC_INTERFACES 类型。
3. DcmDspDidInfoRef:选择2.4中新建的 DcmDspDidInfo。
2.4DcmDspDidInfos 的配置
这个配置就比较简单,主要是配置DID是否支持读写,以及配置安全等级和支持的会话模式。
2.5DcmDspPeriodicTransmission 的配置
1. DcmDspPeriodicTransmissionFastRate 为 0.1,0x2A 服务 transmissionMode 为 0x03(“sendAtFastRate”) 时的传输速率为 0.1。
2. DcmDspPeriodicTransmissionMediumRate 为 0.2,0x2A 服务 transmissionMode 为 0x02(“sendAtMediumRate”)时的传输速率为 0.2。
3. DcmDspPeriodicTransmissionSlowRate 为 0.25,0x2A 服务 transmissionMode 为 0x01 (“sendAtSlowRate”) 时的传输速率为 0.25
2.6DcmDslProtocolRow的配置
配置 DcmDslProtocolRow,注意 DcmDslProtocolTransType 必须选择 Type2,这个是依据14229协议中当选择2A服务时,必须选择type2,数据发送必须使用独立的pdu。
到此,2a服务的配置就基本结束了,本服务引入did概念,后续也会讲到,大家快关注我吧,持续给大家带来高质量的文章,谢谢各位,欢迎大家和我交流哟!