码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【UDS】ISO14229之0x31服务


    文章目录

    • 前言
    • 一、理论描述
    • 二、使用步骤
      • 1.请求
      • 2.响应
    • 总结


    ->返回总目录<-

    前言

    简称: “RoutineControl”,例程控制
    功能: 该服务执行指定的步骤操作并获取相关结果,相比0x2F服务,具有较大的灵活性,可用于较为复杂类型的控制。一般应用包括清除内存(多数用在更新ECU软件),重置或学习自适应数据,运行自检,方向盘角度零点标定等。


    一、理论描述

    程序控制类型的定义如下表:
    在这里插入图片描述
    01: 若响应消息是肯定或否定,表示请求已经执行或即将执行,则需在完成01请求消息和完成首个响应消息之间的某段时间内启动例程。
    02: 若响应消息是肯定或否定,表示停止例程的请求已经执行或即将执行,则需在完成02请求消息和完成首个响应消息之后停止例程。
    03: 使用该子功能请求例程的结果(如退出状态),该结果是ECU执行例程所产生的结果。(不太常用~~)

    二、使用步骤

    1.请求

    这里博主就只说Sub-Function 为 01的情况,目前项目中也只用到该服务,02也简单就不说了。
    在这里插入图片描述

    例如: 诊断服务更新或刷写ECU程序之前,需要请求该服务项,检查是否满足刷写程序的条件。
    某整车厂针对0x31服务的需求如下,(注:M表示强制要求,U表示可选)
    Sub-Function: 01 (M),02 (U),03 (U)
    RoutineIdentifier: 0x0203,软件刷写条件预检查
    满足刷写的条件: 车速 < 5km/h,车辆处于非充电状态(新能源车型),车辆处于驻车状态。

    请求报文: 31 01 02 03

    在请求该服务前,我们先制造一个不满足刷写条件的条件,如车速。该报文是我们ECU接收到的报文。
    在这里插入图片描述
    车速 6km/h > 条件5km/h,即不满足刷写条件,请求报文如下图:
    在这里插入图片描述
    红框:我们请求的报文
    Service ID:31
    Sub-Function:01
    RoutineIdentifier:02 03
    RoutineControlOptionRecord:无,可选项。

    2.响应

    1)正响应
    在这里插入图片描述

    Routine StatusRecord: 即请求之后的状态,如:00表示刷写条件满足,01表示刷写条件不满足。

    参见CANoe图中的蓝框

    2)否定响应
    支持的否定响应如下,一般工作上根据整车厂给的诊断输入文档来选择要支持的NRC码。
    在这里插入图片描述
    在这里插入图片描述

    博主平日项目中支持NRC如下:

    NRC12: Sub-Function不支持(请求数据 31 FF 02 03。而你请求的子功能FF根本找不到啊,规范里也没有该子服务,ECU收到你这条报文,无法识别subfunc,因此回复该NRC)
    在这里插入图片描述

    NRC13: 请求报文数据长度有误(正确请求数据31 01 02 03 有4个字节。而你请求的是31 01 02只有3个字节,ECU收到你这条报文,无法理解,因此回复该NRC)
    在这里插入图片描述

    NRC22: 请求条件不满足
    (一般整车厂会告诉你NRC22的满足条件,例如:车速>3km/h,电源过欠压时候,请求服务,ECU便回复该NRC)

    NRC31: 请求超出范围(不按套路出牌,发送 31 01 66 66,RoutineIdentifier有66 66?)

    NRC33: 安全访问拒绝(在请求31服务之前,必须先解锁,否则ECU回复NRC33)

    总结

    0x31服务在实际运用中要比0x2F复杂些,但那又怎样,通过本章讲解是否对该服务熟悉那么一勾勾呢?
    下一章 DTC控制 0x85服务见!

    ->返回总目录<-

  • 相关阅读:
    vue实现的商品列表网页
    软件测试周刊(第84期):这个世界根本不存在“不会做”、“不能做”,只有“不想做”和“不敢做”,当你失去所有依靠的时候,你自然就什么都会了。
    福建省发改委福州市营商办莅临育润大健康事业部指导视察工作
    【初阶C语言】操作符2---表达式求值
    Apache Airflow (一) : Airflow架构及
    微信小程序开发学习文档(万字总结,一篇搞定前端开发)
    【SA8295P 源码分析 (二)】68 - Android 侧用户层 输入子系统获取 /dev/input/event0 节点数据 代码流程分析
    RTP相关
    长风破浪会有时,直挂云帆济沧海!(工作室年会总结)
    Docker 安装 Gitlab
  • 原文地址:https://blog.csdn.net/weixin_48498880/article/details/127699636
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号