Depth君
这个作者很懒,什么都没留下…
展开
-
OBD读取车辆里程数
总的来说,虽然OBD系统在某些情况下可以间接提供车辆里程数的信息,但它并不是设计用来直接读取或显示车辆总里程的工具。它主要提供的是与故障相关的里程数据,例如“故障灯点亮后行驶的里程数”和“消除故障后行驶的里程数”。OBD系统主要是用于诊断和排放相关的数据读取,它并不总是提供所有车主可能关心的车辆信息,特别是与车辆维护和使用情况密切相关的数据,如总里程。但这种方法成本较高,可能不太实际。:如果知道车辆安装OBD系统前的里程数,那么可以通过将该里程数与OBD提供的故障相关里程数据相加,从而估算出车辆的总里程。原创 2024-05-02 23:45:30 · 205 阅读 · 0 评论 -
请详细解释一下CAN协议中的差分信号的原理
当需要表示逻辑“0”(显性电平)时,CAN_High线的电压会高于CAN_Low线的电压,形成一个正电压差;而当需要表示逻辑“1”(隐性电平)时,两根线的电压基本相等或相差很小,形成一个接近0V的电压差。具体来说,在ISO 11898标准中,显性电平对应逻辑0,CAN_H和CAN_L之差为2.0V左右(实际可能因具体实现而异,但一般要求在1.5V到3.0V之间)。当外界有强电场或电磁干扰时,由于两根信号线受到的影响基本相同,因此它们之间的电压差(即差分信号)受到的影响较小。原创 2024-02-24 11:42:17 · 881 阅读 · 0 评论 -
诊断服务通讯保持0X3E服务
因此,通信保持0x3E在汽车诊断和维修过程中起着重要的作用,能够提供更加稳定和可靠的诊断连接,帮助维修人员更好地进行故障诊断和车辆维修。通过通讯保持技术,设备可以在通话过程中保持连接状态,避免出现连接中断或信号丢失的情况,从而保证通话的顺利进行。通过周期性地发送通讯保持请求,节点A和节点B可以确保彼此之间的通讯连接保持激活状态,避免由于各种原因导致的通讯中断。总之,通讯保持的作用是至关重要的,它可以确保通讯设备在各种环境和应用场景下都能够正常、稳定地工作,为用户提供高质量的通讯服务。原创 2024-01-14 22:06:29 · 148 阅读 · 0 评论 -
UDS 诊断通讯
请注意,这个例子是一个简化的描述,实际的诊断过程可能涉及更多的细节和步骤,包括通信初始化、会话控制、安全访问等。需要注意的是,不同车型可能支持的UDS协议版本和功能有所不同,具体支持情况需要根据车型和ECU型号来确定。在这个例子中,上下位机之间的通信协议可能是专有的,取决于诊断工具和设备制造商。需要注意的是,具体的UDS请求命令和服务标识符需要根据具体的车型和ECU型号来确定。下位机:直接与车辆ECU通信的硬件接口或设备,它负责接收上位机的命令,转换为适合与ECU通信的格式,并将ECU的响应转发给上位机。原创 2024-01-14 22:04:39 · 65 阅读 · 0 评论 -
UDS统一诊断服务读取DTC信息0X19服务
DTC是车辆故障诊断系统中的重要部分,当车辆发生故障时,相应的DTC会被存储在ECU(电子控制单元)的故障代码存储器中。需要注意的是,以上只是汽车故障码的一小部分示例,实际中汽车可能出现的故障码种类非常多。另外,有些情况下,DTC故障可能是由于临时的操作或环境条件引起的,而不是由于实际的硬件故障。汽车上常见的故障码有很多种,这些故障码是由车辆的电子控制系统生成的,用于指示车辆各个系统中出现的故障或问题。故障修复:根据故障码的含义和解读,技师可以定位到具体的故障部件或系统,并进行相应的修复。原创 2024-01-11 17:18:03 · 440 阅读 · 0 评论 -
汽车电子ECU安全算法
汽车电子ECU安全算法是用于保护ECU中的数据和请求的一种算法,其目的是防止未经授权的访问和恶意攻击。访问控制算法:用于限制对ECU的访问权限,只有经过授权的用户才能访问和操作ECU。总之,汽车电子ECU安全算法是保护ECU中数据和请求的重要手段,通过采用加密、身份验证和访问控制等手段,可以有效地防止未经授权的访问和恶意攻击,提高汽车系统的安全性。身份验证算法:用于验证ECU的身份,确保只有合法的ECU才能访问和操作汽车系统。安全启动协议:用于验证ECU的启动过程,确保ECU的软件和固件没有被篡改或损坏。原创 2024-01-01 19:09:25 · 524 阅读 · 0 评论 -
汽车诊断软件开发
这可能导致在开发过程中,由于不同工程师对同一份诊断需求文件的解读出现偏差,例如开发工程师和测试工程师对同一句话的理解不同,从而导致测试不通过,需要重新回到需求定义的部分去完善或解释这条需求。需要注意的是,汽车诊断软件逆向协议是一项复杂且技术要求较高的工作,需要具备深厚的软件开发和测试基础以及对汽车行业的深入了解。汽车诊断软件公司的开发工作岗位需要具备扎实的软件开发和测试基础,熟悉汽车行业标准和规范,以及良好的沟通能力和团队协作精神。这包括诊断协议的实现、诊断服务的设计和开发、诊断功能的集成和测试等。原创 2024-01-01 18:51:48 · 903 阅读 · 0 评论 -
车型诊断框架的搭建系列_车型菜单
目前市面上有非常多款诊断仪,读码器,钥匙匹配,特殊功能等,这有元征的X431,有道通的908,有朗仁的XTool,有爱夫卡的F7 MAX,有共轨之家的诊断能手......但是你知道他们整个诊断框架的搭建吗?开发过程中需要的是清晰的思维,面对繁琐的细心和耐心,然后不断测试的严谨,最后才能成为一个优秀的诊断工程师。然而很多情况下,车辆的识别号识别不到正确的诊断系统ID,或者说我们的诊断系统ID开发的不好,出现多个或者查表不对的情况,这种情况下就需要我们去手动选择对应的索引ID,要一级级的选择菜单。原创 2023-02-05 18:27:54 · 202 阅读 · 0 评论 -
车型诊断框架的搭建系列_故障码(PCBU)库
车型诊断基本都是通过读取故障码,获取故障码的信息在有的放矢去解决车辆故障,所以说集成一个故障码库是一个ODM厂核心技术,同时也是一个不断积累的过程,并且一般故障码是增加扩容的过程,以前的故障码是不允许修改,他们很经常以固定的故障信息反馈给维修人员。作为一个维修人员,肯定希望获取更多的信息的,有些DTC没有用PCBU的格式给出来,特别在一些国产车上面不按常理出牌,故障码都是残缺不全的而且还不标准,因为国产车很多都是生搬硬套,多种ECU拼凑一起,甚至发动机都是拼凑的,强行组装一起。比如FIAT的故障码库如下。原创 2023-02-05 18:26:55 · 179 阅读 · 0 评论 -
车型诊断框架的搭建系列_车型菜单
目前市面上有非常多款诊断仪,读码器,钥匙匹配,特殊功能等,这有元征的X431,有道通的908,有朗仁的XTool,有爱夫卡的F7 MAX,有共轨之家的诊断能手......但是你知道他们整个诊断框架的搭建吗?开发过程中需要的是清晰的思维,面对繁琐的细心和耐心,然后不断测试的严谨,最后才能成为一个优秀的诊断工程师。然而很多情况下,车辆的识别号识别不到正确的诊断系统ID,或者说我们的诊断系统ID开发的不好,出现多个或者查表不对的情况,这种情况下就需要我们去手动选择对应的索引ID,要一级级的选择菜单。原创 2023-01-22 21:24:52 · 225 阅读 · 0 评论 -
汽车通信协议系列2_ISO 9141协议
谈起ISO9141协议,我们可能先聊一下5Baud rate初始化,其实ISO9141协议跟KWP2000是一样的,只是差别在于初始化需要5Baud rate初始化。ECU继续响应0x08 0x08两个关键字,在ISO9141当中只有0x08,0x08以及0x94,0x94两种模式。此时波特率不再是5BPS,而是进入了你设定的波特率当中,5BPS只在初始化起作用。这个时候你继续发0xF7,表示关键字2地址取反,响应0xcc就代表5BPS初始化成功。然后进入快速初始化。5号和7号脚为通讯脚,原创 2022-10-08 12:16:29 · 477 阅读 · 0 评论 -
汽车通信协议系列2_ISO 9141代码篇
这里面难度都不会太大,但是作为程序员还是建议你做一个带有艺术性的架构,毕竟协议层是需要千锤百炼的,如果将来有一天你的代码被很多人使用,用在诊断成百上千的车子上,你也不想半路掉链子,你可以增加一些通信保持,消息循环以及异常处理让你的代码更加健壮可读好维护。当然,首先你要能够确定上下位机的通信是通的,你可以用STM32,可以用FPGA,可以用广东周立功单片机的Can卡,很多种方式。这里用网络上的一份代码,不完全我自己写的,用来推荐参考的,它是采用Arduino平台的,diy比较轻松的事情。原创 2022-10-08 12:14:31 · 312 阅读 · 0 评论 -
ECU安全访问系列_2(代码篇)
一般我们都会有SID为0x10开头的先访问,比如10 03命令,用于指示ECU将进入安全的session。ecu回复SID+0x40作为肯定回复之后开始发送安全算法。写参数服务会通过改变服务端内部的一些标定参数来永久性改变控制器的功能或者性能,如:改写发动机烟度限制参数可以对发动机扭矩响应有一定提升;收到27 03的肯定回复后,否定回复已经做到api里了,这里就不作详细讨论(命令里面会有Seed)之前我们已经对Can的单帧和多帧发送底层代码做了描述,今天我们直接将这部分封装成一个api。原创 2022-09-14 12:57:10 · 258 阅读 · 0 评论 -
基于ISO14229协议的单帧以及多帧Can接收代码
该标准基于OSI(Open Systems Interconnection)基本参考模型,将通讯系统分为7层,由低到高依次为:物理层(Physical layer),链路层(Data link layer),网络层(Network layer),传输层(Transport layer),会话层(Session layer),表示层(Presentation layer),应用层(Application layer)。主要是定义一个结构体,对数据长度,远程帧和扩展帧,数据,保留字节。原创 2022-09-04 03:03:37 · 309 阅读 · 0 评论 -
基于ISO14229协议的安全访问系列_1
在安全算法访问当中,你要先请求ecu拿到seed种子,但是这个时候ecu还没完全的信任你,你必须基于种子去计算出key钥匙,将种子对应的钥匙发送给ecu,这个时候ecu对钥匙进行匹配,如果匹配正确,才有可能和你进行访问握手。安全算法是一个做车型开发公司的核心,无论是ODM主机厂,还是后市场维修方,想要对车型进行诊断和维修,就必须要通过安全访问,获取到权限后才能对车型进行一系列操作,如果你没拿到安全算法,那么这辆车容易在你进行操作的时候随时启动自我保护,关闭车型或者让这辆车报废。原创 2022-09-04 02:59:29 · 138 阅读 · 0 评论 -
基于ISO14229协议的单帧以及多帧Can发送代码
在诊断行业的人里头,都对CAN协议以及KWP协议不陌生,特别是当初在爱夫卡做协议工程师,在道通或者元征当诊断软件工程师,协议解析与研究是日常工作之本。多帧发送要先收到第一帧发送的数据Ack后才能继续确认下一帧发送,也就是确认帧ID必须为0x30,如果不是0x30那么就不能继续下面的多帧发送。对于单帧和多帧的判断是看发送长度是不是大于7个字节,如果小于或者等于7个字节,那么就是单帧发送,如果大于7个字节就必须采用多帧发送。这里面的程序其实就7个字节为一帧发送,然后是第一个字节的计算,其他没有啥难度。原创 2022-08-20 21:26:28 · 461 阅读 · 0 评论