【ISO 14229-1:2023 UDS诊断(会话控制0x10服务)测试用例CAPL代码全解析⑩】

news/2025/2/21 17:51:13/

ISO 14229-1:2023 UDS诊断【会话控制0x10服务】_TestCase10

作者:车端域控测试工程师
更新日期:2025年02月17日
关键词:UDS诊断、0x10服务、诊断会话控制、ECU测试、ISO 14229-1:2023

TC10-010测试用例

用例ID测试场景验证要点参考条款预期结果
TC10-010默认会话禁止写操作在默认会话下尝试执行0x2E写服务§7.6.2返回NRC=0x7E(服务未支持)
/*----------------------------------------------------------------*/
/* 测试用例ID      : TC10-010                                     */
/* 测试项名称      : 默认会话写操作禁止验证             */
/* 测试依据        : §7.6.2                                       */
/* 验证目标        : 1.成功进入默认会话                          */
/*                   2.返回NRC=0x7E(服务未支持)                 */
/* 作者            : 车端域控测试工程师                          */
/* 创建日期        : 2025-02-17                                   */
/*----------------------------------------------------------------*/variables 
{// 诊断协议参数 const long DiagReqID = 0x732;    // 请求报文ID const long DiagResID = 0x733;    // 响应报文ID const byte DefaultSessionReq[2] = {0x10, 0x01};  // 默认会话请求 const byte WriteReq[3] = {0x2E, 0xF1, 0x90};     // 写数据请求 const byte ExpectedNRC = 0x7E;                   // 预期否定响应码 // 状态跟踪 msTimer sessionTimer;msTimer writeTimer;int isDefaultSession = 0;
}testcase TC10_010_WriteProhibitionCheck()
{TestModuleTitle("TC10-010 默认会话写操作验证(增强版)");// 阶段1:强制进入默认会话 testStep("设置默认会话模式");message DiagReqID [CAN] {dlc = 2;byte(0) = DefaultSessionReq[0];byte(1) = DefaultSessionReq[1];}output(this);// 等待会话切换响应(带超时保护)setTimer(sessionTimer, 300);while(1) {if(TestWaitForMessage(DiagResID, 50)) {if(this.byte(0) == 0x50 && this.byte(1) == 0x01) {testStepPass("成功进入默认会话");isDefaultSession = 1;break;}else if(this.byte(0) == 0x7F) {testStepFail("会话设置失败 NRC=0x%02X", this.byte(2));return;}}if(getTimer(sessionTimer) >= 300) {testStepFail("会话设置超时");return;}}// 阶段2:执行写操作验证 if(isDefaultSession) {testStep("发送0x2E写服务请求");message DiagReqID [CAN] {dlc = 3;byte(0) = WriteReq[0];byte(1) = WriteReq[1];byte(2) = WriteReq[2];}output(this);// 响应验证(双重校验机制)setTimer(writeTimer, 250);while(1) {if(TestWaitForMessage(DiagResID, 50)) {// 否定响应验证 if(this.byte(0) == 0x7F && this.byte(1) == WriteReq[0] && this.byte(2) == ExpectedNRC) {testStepPass("收到预期NRC=0x%02X", ExpectedNRC);testCasePass("验证成功");return;}// 意外肯定响应 else if(this.byte(0) == 0x6E) {testStepFail("检测到非法写操作成功");return;}}if(getTimer(writeTimer) >= 250) {testStepFail("写服务响应超时");return;}}}
}/*--------------------------------------------------------------会话状态跟踪函数(示例)
--------------------------------------------------------------*/
on sysvar DiagSession::CurrentSession 
{// 实时跟踪会话状态变化 isDefaultSession = (@this::CurrentSession == 0x01) ? 1 : 0;testAddCondition("当前会话状态:%s", (isDefaultSession) ? "默认会话" : "其他会话");
}

增强功能解析

  1. 双阶段验证流程
NRC匹配
其他响应
强制会话设置
设置成功?
执行写操作
终止测试
响应验证
测试通过
测试失败
  1. 关键技术升级

  2. 会话状态强制设置:

    byte DefaultSessionReq[2] = {0x10, 0x01};  // 显式设置默认会话 
    
  3. 双重超时机制:

    setTimer(sessionTimer, 300);  // 会话设置超时 
    setTimer(writeTimer, 250);    // 写操作响应超时 
    
  4. 实时状态跟踪:

    on sysvar DiagSession::CurrentSession  // 会话变量监控 
    
  5. 异常处理增强

  • 多级错误检测:
    错误类型检测方式处理措施
    会话设置失败0x7F响应码立即终止测试
    意外会话模式系统变量监控记录状态日志
    非法肯定响应0x6E服务ID检测标记安全漏洞
    总线通信异常连续超时检测触发硬件故障警报
  1. 扩展验证建议

  2. 组合测试场景:

    // 可扩展添加以下测试步骤:
    // 1. 尝试进入其他会话后验证写权限 
    // 2. 连续多次发送写请求 
    // 3. 不同数据长度的写操作尝试 
    
  3. 安全增强检测:

    void CheckSecurityAccess()
    {// 验证安全访问状态对写操作的影响 
    }
    

工程实践指南

  1. 环境配置要求
    | 配置项 | 推荐规格 |
    |----------------|-------------------------------|
    | 总线负载率 | <60% |
    | ECU供电电压 | 13.5V±0.2V |
    | 测试工具 | CANoe 15.0+诊断功能包 |
    | 硬件接口 | 带继电器控制的电源模块 |

  2. 关键验证指标
    | 验证维度 | 合格标准 | 测量方法 |
    |----------------|-------------------------------|------------------------|
    | 会话切换时间 | ≤200ms | 示波器抓取报文间隔 |
    | NRC一致性 | 100%返回0x7E | 自动化脚本验证 |
    | 错误响应率 | 非法请求拒绝率100% | 压力测试统计 |
    | 状态跟踪精度 | 系统变量刷新周期≤50ms | 监控日志分析 |

  3. 关联测试建议

  • 配合TC07-011(会话模式切换稳定性测试)
  • 结合TC12-004(服务可用性矩阵验证)
  • 关联TC09-015(非法服务请求处理测试)

调试建议:

  1. Write Window设置触发条件:id==733h && byte(0)==7Fh
  2. 使用Graphics窗口同步显示以下信号:
    • DiagSession::CurrentSession
    • sysvar::ErrorCode
    • message::DiagResID.byte(2)
  3. 启用Diagnostic Sequence Viewer分析服务调用序列
  4. 添加Test Coverage监控点:
    testAddCoverage("SESS-01", "Default session setup");
    testAddCoverage("WRITE-05", "Service prohibition check");
    

http://www.ppmy.cn/news/1573560.html

相关文章

JavaE E基础之 Tomcat与Http (上)

目录 1.Java WEB前奏 1.1. C/S 结构 1.2. B/S 结构 1.3. 静态网页和动态网页 1.4. 常见的网页 1.5. Web 服务器 2. Tomcat 安装(熟练) 2.1. Tomcat 概述 2.2. Tomcat 的作用 2.3 Tomcat 安装 2.4. Tomcat 测试 3. Tomcat 分析(熟练) 3.1. Tomcat 目录结构 3.2. Tomc…

DeepSeek是什么?两种模型的对比?

最近DeepSeek的风也是很大&#xff0c;它也是很火&#xff0c;那么DeepSeek是什么呢&#xff1f; 什么是DeepSeek&#xff1f; DeepSeek是一家专注通用人工智能&#xff08;AGI&#xff09;的中国科技公司&#xff0c;主攻大模型研发与应用。DeepSeek-R1是其开源的推理模型&a…

Memcached(主主复制与keepalive高可用)

案例环境 cache1&#xff1a;192.168.180.144 cache2&#xff1a;192.168.180.145 cache-api&#xff1a;192.168.180.143 案例过程 前置准备 关闭所有设备防火墙 systemctl stop firewalld && setenforce 0 更改主机名 hostnamectl set-hostname cache1 &…

MSI微星电脑冲锋坦克Pro Vector GP76 12UGS(MS-17K4)原厂Win11系统恢复镜像,含还原功能,预装OEM系统下载

适用机型&#xff1a;【MS-17K4】 链接&#xff1a;https://pan.baidu.com/s/1P8ZgXc6S_J9DI8RToRd0dQ?pwdqrf1 提取码&#xff1a;qrf1 微星笔记本原装出厂WINDOWS11系统自带所有驱动、出厂主题壁纸、系统属性专属联机支持标志、Office办公软件、MSI Center控制中心等预装…

走进量化投资【前章】

量化投资简介 广义上&#xff0c;我们可以认为凡是借助于数学模型和计算机实现的投资都称之为量化投资——目前&#xff0c;国内比较常见的量化投资策略有alpha策略&#xff08;IQC用的就是这个了&#xff09;、期货CTA策略、套利策略和高频交易策略 在日常生活中&#xff0c;…

IDEA CodeGPT 使用教程

IDEA CodeGPT 使用教程 CodeGPT 是一个 IntelliJ IDEA 插件&#xff0c;可以利用 OpenAI&#xff08;或自建 AI 模型&#xff09;来帮助开发者完成代码编写、优化、调试、解释错误等任务。以下是详细的安装与配置教程。 1. 安装 CodeGPT 插件 方式 1&#xff1a;从插件市场安…

【Excel笔记_6】条件格式和自定义格式设置表中数值超过100保留1位,超过1000保留0位,低于100为默认

方法一&#xff1a;自定义格式 选中需要设置格式的单元格区域。右键选择设置单元格格式&#xff0c;或者在工具栏中选择开始 -> 数字 -> 自定义格式。在类型框中输入以下自定义格式&#xff1a; [>1000]0;[>100]0.0;G/通用格式解释&#xff1a; [>1000]0&…

迅为RK3568开发板篇Openharmony配置HDF控制UART-UART 接口运作机制

在 HDF 框架中&#xff0c;串口接口适配模式采用独立服务模式&#xff0c;如下图所示&#xff1a; 如上图所示&#xff0c;每个设备对象会独立发布一个设备服务来处理外部访问&#xff0c;设备管理器接收到API 的访问请求之后&#xff0c;通过提取该请求的参数&#xff0c;达…