http://ecad.tu-sofia.bg/et/2005/pdf/Paper097-P_Dzhelekarski1.pdf

INITIALIZATION

Prior to any diagnostic communication an initialization must be performed.

This is the process of activating the OBD system for starting communication.

The initialization can be started after an idle-time on the bus.

Two types of initialization can be used:

5-baud and fast initialization.

ISO 9141-2 supports only 5-baud initialization,

whereas ISO 14230-2 supports both types.

5-BAUD (CARB) INITIALIZATION

This initialization starts with sending of 5-baud address byte from the tester (client) to the OBD system (server).

If L-line exists, the address byte must be sent simultaneously on both K & L-lines, otherwise it should be sent only on K-line.

The address byte contains the functional address of the OBD system.

This is implemented in two ways in initSlow() method.

In K&L initialization, both lines are driven by simultaneous setting/clearing of RTS and TxD according to the bit values of the address byte:

this is computed 5-baud init. A system timer for 200 ms (5-baud bit time) is used.

For K-only initialization the port is configured at 5 baud rate; the address byte is sent; 2000 ms pause follows; baud rate is restored to 10,400 baud.

Fig. 3 shows the format of the 5-baud initialization. The server returns baud rate synchronization pattern ($55)

(standard baud rate 10,4 kbit/s, other rate is manufacturer specific). All subsequent communications are using this baud rate.

After sending the pattern, the server sends two keywords (KW) which carry information about the form of the subsequent serial communications.

From these keywords the tester identifies the diagnostic protocol to be used, ISO 14230-2 or ISO 9141-2.

After that the client confirms with sending logical inversion of keyword 2.

Then the server confirms with logical inversion of the address byte.

From this time on the communication link is established and the tester can start to request diagnostic data.

FAST INITIALIZATION

The fast initialization begins with wake-up pattern (WuP), transmitted by the tester simultaneously on K and L lines

(if provided L line is used, otherwise transmitted only on K-line) – see Fig. 4.

This is implemented in initFast() method by setting the TxD and RTS , followed by waiting for TiniL time interval and clearing of these signals.

After the time TWuP has elapsed the client sends StartComminication message request.

This message uses functional addressing and contains the target address of the OBD system and the source address of the tester.

The server responds with StartCommunication positive response(s), which contains the keywords.

DATA TRANSFER

After the communication link has been established, the tester can send request messages

and receive message response(s) from the ECU(s) of the OBD system (see Fig. 5).

This is referred to as data transfer and is performed by the transfer() method.

The transfer timing is very important and is determined by the periods P1…P4 with specified maximal and minimal allowable values.

The timing is implemented by using system timer for wait function and by using communication read timeouts.

In this way it is possible to group received response bytes into messages, based on separation period P2.

The period P3max has value of 5000 ms. After that time the communication link is automatically terminated by the server.

Therefore, to keep connection alive the tester must send periodically request messages.

ISO 9141-2 and ISO 14230-2 INITIALIZATION and DATA TRANSFER的更多相关文章

  1. Stripe开发笔记之-ISO Currency Code(ISO 4217)

    参考:维基百科和ISO官网 ISO Currency Code:国际标准组织通用货币代号,国际标准化组织(英语:International Organization for Standardizati ...

  2. Initialization of data members

    In C++, class variables are initialized in the same order as they appear in the class declaration. C ...

  3. 从FreeBSD里面看到的网络协议列表,感觉可以保存一下

    # # Internet protocols # # $FreeBSD$ # from: @(#)protocols 5.1 (Berkeley) 4/17/89 # # See also http: ...

  4. BW知识问答汇总

    什么是sap的星型结构,能不能详细讲解一下? Cube的星型结构中SID技术的优点有哪些? 什么是BW的星型结构,与传统的星型结构的区别是什么? SAP的星型结构相对于传统的星型结构优势? Cube与 ...

  5. BW知识问答锦集

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  6. SAE/ISO standards for Automotive

    On-Board Diagnostics J1962 Diagnostic Connector Equivalent to ISO/DIS 15031-3: December 14, 2001J201 ...

  7. Vehicle Network Protocols -- ISO/KWP CAN CCD PCI SCI / SCP / Class 2

    Vehicle Network Protocols There are 5 protocols in the OBD2 system and a car will normally only use ...

  8. atitit.日期,星期,时候的显示方法ISO 8601标准

    atitit.日期,星期,时候的显示方法ISO 8601标准 1. ISO 86011 2. DAte日期的显示1 2.1. Normal1 2.2. 顺序日期表示法(可以将一年内的天数直接表示)1 ...

  9. 自定义制作iso镜像

    下载"/etc/yum.repos.d/"下的MondoRescue软件库,文件名为"mondorescue.repo".请为你的Linux OS发行版本下载正 ...

随机推荐

  1. 可以Ping通和DNS解析,但打不开网页的解决办法

    一. 网络故障表现为: 1.Ping地址正常,能ping通任何本来就可以ping通地址,如网关.域名. 2.能DNS解析域名. 3.无法打开网页,感觉是网页打开的一瞬间就显示无网络连接. 4.只需要连 ...

  2. 在Linux上安装多Jboss个需要修改的端口

    如果在一台机器上部署了多个jboss server,需要修改相关端口以避免端口冲突.目前确认需要修改的配置如下一.vi $JBOSS_HOME/server/default/conf/jboss-se ...

  3. centos mysq table is read only

    1.进入mysql数据库目录,使用命令"chown -R mysql <数据库文件夹名称>" 2. "chgrp -R mysql <数据库文件夹名称& ...

  4. [转] 接触C# 反射 2

    逆心 原文 反射基础,2013-4. 反射用于在程序运行过程中,获取类里面的信息或发现程序集并运行的一个过程.通过反射可以获得.dll和.exe后缀的程序集里面的信息.使用反射可以看到一个程序集内部的 ...

  5. 开启Nginx的gzip压缩功能详解

    默认情况下,Nginx的gzip压缩是关闭的, gzip压缩功能就是可以让你节省不少带宽,但是会增加服务器CPU的开销哦,Nginx默认只对text/html进行压缩 ,如果要对html之外的内容进行 ...

  6. 【剑指offer 面试题27】二叉搜索树与双向链表

    输入一颗二叉搜索树,将该二叉搜索树转换成一个排序的双向链表. C++: #include <iostream> using namespace std; struct TreeNode { ...

  7. Jmeter介绍

    一.添加线程组 一个性能测试请求负载是基于一个线程组完成的.一个测试计划必须有一个线程组.测试计划添加线程组非常简单.在测试计划右键弹出下拉菜单(添加-->Threads(Users)---&g ...

  8. 编码的UI测试项目——Visual Studio 2013

    今天实现了一次编码的UI测试项目,以下是我进行测试的过程: 1.新建测试项目 在visual studio中(我用的版本是2013 update2)点击文件->新建->项目,选择“编码的U ...

  9. C#开源框架(整理)

    http://www.cnblogs.com/chinanetwind/p/3715809.html http://www.cnblogs.com/chinanetwind/p/3715813.htm ...

  10. Error when running Swift3 in REPL

    Traceback (most recent call last): File "", line 1, in NameError: name 'run_one_line' is n ...