尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

SAE J1587/SAE J1708 协议笔记

SAE J1587/SAE J1708 协议笔记 SAE J1587/SAE J1708 协议笔记1. 协议架构概述SAE J1708 定义了物理层和数据链路层相当于 OSI 模型的底两层。SAE J1587 定义了应用层规定了数据的含义和格式。简单理解J1708 是“公路和交通规则”怎么跑J1587 是“货物清单”运什么。2. SAE J1708物理层与链路层2.1 物理层特性硬件基础基于 RS-485 差分总线。拓扑限制最大总线长度 40 米。电气特性默认状态通过上拉电阻保持隐性电平逻辑 1。显性电平逻辑 0由驱动器主动拉低。2.2 链路层特性通信速率9600 bps固定。字节序小端模式低位优先。报文结构最大长度21 字节。组成MID (1字节) 数据域 (N字节) 校验和 (1字节)。核心机制非破坏性位仲裁软件协助硬件实现。3. J1708 核心难点仲裁机制由于 RS-485 本身无仲裁功能J1708 通过时间片 线与逻辑实现多主竞争。3.1 硬件实现原理模拟“线与”为了实现类似 CAN 总线的“0 覆盖 1”仲裁电路接法将 MCU 的串口 TX 引脚反向接到 RS-485 收发器的发送使能端 (DE)。逻辑分析发送数据位 ‘1’→ TX 为高 → DE 为低 →关闭发送器→ 总线被上拉为隐性 (1)。发送数据位 ‘0’→ TX 为低 → DE 为高 →开启发送器→ 总线被拉低为显性 (0)。冲突检测节点发送 ‘1’ 时发送器关闭此时读取总线状态。若读回为 ‘0’显性说明有其他节点正在发 ‘0’优先级更高判定为冲突。3.2 总线访问控制节点必须在总线空闲后等待特定的时间才能发送。标准访问时间公式总线访问时间Ta的计算公式Ta Ti 2 × Tb × P其中Ti 空闲线最小时间10比特时间Tb 比特时间P 消息优先级1-8优先级映射表优先级紧急程度应用场景访问时间示例1-2最高紧急需立即访问总线的消息12-14 bit3-4高度紧急防止严重机械损坏的消息16-18 bit5-6中等紧急影响车辆运行经济性的消息20-22 bit7-8普通紧急其他所有消息24-26 bit3.3 冲突处理流程检测所有发射器监视 MID 字节的发送过程。判定若检测到冲突发 ‘1’ 读到 ‘0’立即放弃总线控制。退避算法若连续两次碰撞采用修改后的公式计算延迟Ta Ti 2 × Tb × (P 1) 2 × Tb × P2其中P2为3bit的伪随机数。4. SAE J1587应用层协议J1587 定义了消息的具体内容不再是单纯的比特流。4.1 消息格式MID 参数块 校验和MID (Message Identifier)1 字节标识发送源模块。范围128 - 255。位于SAE J1587协议 页码 2相当于J1939中的源地址参数块包含一个或多个 PID 及其数据。校验和用于错误检测。1字节使得整帧所有字节(包括校验码本身)相加对 256 取模结果为04.2 PID (Parameter Identifier) 详解PID 标识了数据的含义如转速、油温。相当于J1939中的SPN。位于SAE J1587协议 页码6若搜索 PID 383 后面有哪些数据则搜索A.383J1587 支持 PID 扩展机制。PID 扩展机制标准 PID直接发送 PID 码。扩展 PID若第一个字节为PID 255则表示 PID 为双字节。计算公式扩展PID值 255 第二个字节值 1PID 数据长度映射规则 (关键)J1587 通过 PID 的值范围来定义后面跟随的数据长度PID 范围 (十进制)数据长度备注0 - 127256-3831 字节常用参数128 - 191384-4472 字节模拟量数据192 - 253448-509变长 (≥2字节)需额外指定长度255扩展标识用于双字节 PID 扩展注扩展后的 PID 同样遵循上述长度映射规则。4.3 特殊功能 PID诊断相关PID 194-196。仪表文本显示PID 225-227。特定节点命令PID 254。5. 报文剖析数据校验报文有效包括检验和在内的报文中的所有字节总和对256求模结果是0。单帧传输的最大字节数为21个字节多帧传输的最大字节数为16*21 336个字节这下面两组报文不对因为他们的校验和不正确正确的应该是**FF**为0所以只看内容意思意思单帧消息单帧消息如下 MID0xAC,表示非车载诊断请求 PID0x80,表示特定参数请求,128a b a — 请求的参数编号 b — 请求参数数据的组件MID ED80ED代表车辆VINMID80代表发动机 含义即读取发动机的VIN识别码 Req:AC80ED8066MID80代表发动机 PID ED ED代表车辆VIN11代表数据长度后面的是17byte数据最后的是校验码 有效数据为5650202020303837363339202020202020车辆VIN为VP0876390x20为空格 Ans:80ED1156502020203038373633392020202020207B多帧消息多帧传输根据协议规定SAE J1587协议多帧传输的最大字节数为16 * 21 336个字节 非车载诊断请求读取车辆管理系统的软件识别码 Req:AC 80 EA BB 69 MID BB代表车辆管理系统 PID C0代表多包数据 11 代表本包数据长度 EA 为PID值软件识别码 20 为最后段编号总段数减 1和当前段编号。其中高四位upper nibble包含最后段编号1 至 15。低四位lower nibble包含当前段编号范围为 0 至 15。段编号按升序分配。 第一帧的24为有效数据长度为36byte 所以有效数据为32 30 39 35 32 32 33 35 50 30 31 2A 32 30 39 30 32 36 36 32 50 30 31 2A 32 30 39 30 32 35 39 31 50 30 31 2A 软件识别码ASCII为20952235P01*20902662P01*20902591P01* 请注意后几帧没有有效长度只有第一帧存在不要将段编号当成有效数据 Ans:BB C0 11 EA 20 24 32 30 39 35 32 32 33 35 50 30 31 2A 32 30 A8 Ans:BB C0 11 EA 21 39 30 32 36 36 32 50 30 31 2A 32 30 39 30 32 58 Ans:BB C0 09 EA 22 35 39 31 50 30 31 2A 31正确的报文第一组机油压力与发动机转速Hex:80BE201C6446DC80MID128BEPID19020RPM 数据 Byte11CRPM 数据 Byte264PID10046Oil Pressure 数据 DCChecksum另一组ECU温度和液压油温MIDPIDDataPIDData1Data2Checksum1282150120548248
返回列表