• 常用的缩略词


ISO15765网络层服务

  • 协议功能

  a)发送/接收最多4095个字节的数据信息;

  b)报告发送/接收完成状态。

网络层内部传输服务,CAN总线上的数据帧没帧只能传输8个字节,ISO 为了适应CAN总线上的数据传输,根据诊断报文数据长度的不同规定了单帧传输和多帧传输两种方式。

1.单帧传输

当应用层的诊断服务数据可以利用单帧CAN数据传送时,可采用单帧传送方式(正常地址,数据长度下小于等于7,扩展帧情况下,数据长度小于等于6)

2.多帧传输

多帧传送方式中,网络层根据需要,将诊断数据进行拆分成一个首帧和多个连续帧。首帧(扩展及混合地址-5字节,正常地址-6字节)包括了分段数据的总长度信息以及一些数据帧;每个连续帧的第一个字节包含拆分的顺序编号,后面的七个字节用于存放诊断数据。接收端在接收到连续帧后根据接收数据帧的编号重组服务数据。

对于CAN诊断来说,我们完全可以通过识别每条CAN帧数据域的首个字节来确定它属于四种类型中的哪类。

N_PCI是TP层最为核心的信息,是TP层区别于其他CAN总线抽象协议的、最为显著的特征。

发送端和接收端通过N_PCI(协议控制信息)确认发送或者接收的帧为首帧、流控帧还是连续帧,如表3,表4.

接收端通过对接收到数据帧的第一个字节进行分析就可以得出所接收到的数据帧为何种数据帧,以及所要接收的数据长度

接收的数据第一个字节的高四位为0则表示所接收的数据帧为单帧,再通过读取低四位以确定单帧数据中的有效字节长度

单帧N_PCI参数定义如下表。

接收的数据的第一个字节为高四位为1则表示所接收的数据帧为多帧的首帧。再读取第四位和第二个字节后确认所需要接收的字节数后,根据接收的能力和双方通信的速率发送流控帧,然后等待多帧连续的到来。

接收的数据第一个字节的高四位为2则表示所接收的数据帧为多帧连续帧。然后在对SN连续帧编号之后的数据放入接收缓冲区

CFN PDU中参数SN用以说明连续帧的顺序

对于所有拆分信息,SN开始于0。FF应当分配值0,它不是明确地包含在NPCI域中,但应当按拆分信息顺序号为0。

第一个流控帧编号(SN)后的连续帧设置为1;

在同一个拆分信息上,每一个新增的连续帧编号(SN)增1;

连续帧编号(SN)的值不受流控帧的影响;

当连续帧编号(SN)到达值15时,它在下一个连续帧中重置为0;

顺序编号如下表10所示表11所示SN值。

接收的数据第一个字节的高四位为3,则表示接收的数据帧为流控帧。低四位的FS表示所发送端所需要进行的动作,BS为能够发送连续帧的数据,STmin为每两帧的时间间隔。

网络层时间管理是为了保证发送端和接收端不会因为等待而永久挂起,从而失去通信能力,因此每次通话的过程中设置了超时的时间参数

  • 举例:
单帧 02 10 02 55 55 55 55 55 0表示单帧,2表示长度,10 02表示数据,其他为位填充  
首帧 10 14 2E F1 90 01 02 03 1表示首帧,0+14表示数据长度(20),后面的为数据  
连续帧

21 02 03 04 05 06 07 08

22 09 0A 0B 0C 0D 0E 0F

2表示连续帧,1,2,3…F,0,1,2…  
流控帧 30 02 20 55 55 55 55 55

3表示流控帧,0表示继续发送,02一次允许发送的连续帧个数,

20表示两个连续帧之间的时间间隔为20ms

红色部分为0表示可以无限发送,流控帧只有3个字节,无数据。

根据这个传输流程我们可以得到诊断报文的传输延迟的公式:T=N_As+N_Bs+N_Cr-Tan+(Ttan+STmin)N-STmin

   2019-12-24      11:47:48     Written by 大崔

ISO15765的更多相关文章

  1. ISO 14229 简介 转载

    作者:autogeek 原文链接:http://www.cnblogs.com/autogeek/p/4458591.html 前言 由于工作中经常用到ISO-14229,因此决定对该协议做个总体介绍 ...

  2. ISO14229系列之一:简介

    作者:autogeek 原文链接:http://www.cnblogs.com/autogeek/p/4458591.html 前言 由于工作中经常用到ISO-14229,因此决定对该协议做个总体介绍 ...

  3. SAE J2534 Pass-Thru API

    Connects to the OBDII J1962 DLC and supports the following protocols. 1 CAN2 Single Wire2 J1850PWM+ ...

  4. 汽车总线obd模拟器,obd仿真器,ecu模拟器,obd开发测试工具,可以模拟ecu中的obd协议 MRD-5050

    汽车总线OBD模拟器MRD-5050型号是在车辆越来越趋于网络化的趋势下研发的,是汽车产品开发.调试.生产必备的工具,能为为开发人员节省大量的时间.当前车辆上的总线设备越来越多,有的高端车上甚至多到有 ...

  5. 【转载】 ISO14229系列之一:简介

    转载链接:http://www.cnblogs.com/autogeek/p/4458591.html 前言 由于工作中经常用到ISO-14229,因此决定对该协议做个总体介绍和总结,既是对自己学习的 ...

  6. CAN学习方法(知乎)

    作者:心机之花链接:https://www.zhihu.com/question/26776219/answer/244433861来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  7. 让Drewtech的J2534 ToolBox 软件支持任何J2534的设备

    更改windows注册表中的FunctionLibrary和ConfigApplication,将DLL和exe路径替换原来的,其他不要动. 或者 create second key in regis ...

  8. SAE J2534介绍

    概要 J2534是一种针对与射频相关的ECU进行闪存编程的概念,而不用考虑ECU使用的通信协议.其目的是所有类型的ECU都应当只需一个工具(硬件设备),通常被称为通过式设备.J2534设备和ECU之间 ...

  9. 嵌入:CAN

    说下我的学习过程.刚到公司的时候我根本不知道什么是CAN,甚至连以太网和串口通讯都不懂.领导把USBCAN分析仪拿给我,把铜线短接上,用软件在CAN1窗口点下发送,CAN2窗口马上接收到了发送出来的数 ...

随机推荐

  1. MouseMoveEvent为了不太耗资源在默认状态下是要鼠标按下才能捕捉到。要想鼠标不按下时的移动也能捕捉到,需要setMouseTracking(true)

    最近用Qt软件界面,需要用到mouseMoveEvent,研究了下,发现些问题,分享一下. 在Qt中要捕捉鼠标移动事件需要重写MouseMoveEvent,但是MouseMoveEvent为了不太耗资 ...

  2. Scala学习十二——高阶函数

    一.本章要点 在Scala中函数是”头等公民“(可以作为参数,返回值,赋值给其他); 可以创建匿名函数,通常还会交给其他函数; 函数参数可以给出需要稍后执行的行为; 许多集合方法都接受函数参数,将函数 ...

  3. Java Web Tomcat服务器

    一.Tomcat目录结构 1.bin:存放脚本文件.其中有个档是catalina.bat,打开这个配置文件,在非注释行加入JDK路径(SET JAVA_HOME=C:\j2sdk1.4.2_06)保存 ...

  4. 三、maven学习-高级

    maven父子工程

  5. 将java文件编译成class文件

    一般情况下,在myeclipse中保存java文件后会自动编译成class文件,但是这种情况只能编译当前工程的java文件,但是如果需要编译不是一个工程的java文件,比如在网上拷贝的java文件改如 ...

  6. java_day03_流程控制

    ch03 目标:表达式和流程控制 ---------------------------------------------- 1.实例变量和局部变量 程序的基本功能是处理数据,程序中需要使用变量来接 ...

  7. stackstorm docker中配置ssh免密码登录方式

    在docker中配置st2的ssh登录方式折腾了好久,今天终于彻底搞懂了如何重启容器后也不丢失之前的配置,只要容器起来后就可以正常ssh 执行st2中的remote-shell-script 和rem ...

  8. Linux基础知识之文件的权限(二)

    除了基本的r,w,x之外,在linux传统的ext2.ext3.ext4文件系统下,还可以设置其他 的文件属性.如chattr,lsattr,而在CentOS7中默认利用xfs作为默认的文件系统,就不 ...

  9. Python爬虫解析htm时lxml的HtmlElement对象获取和设置inner html方法

    Python的lxml是一个相当强悍的解析html.XML的模块,最新版本支持的python版本从2.6到3.6,是写爬虫的必备利器.它基于C语言库libxml2 和 libxslt,进行了Pytho ...

  10. 1.java多线程_实现线程的两种方式

    1.java多线程基本知识 1.1.进程介绍 不管是我们开发的应用程序,还是我们运行的其他的应用程序,都需要先把程序安装在本地的硬盘上.然后找到这个程序的启动文件, 启动程序的时候,其实是电脑把当前的 ...