` OBD在商用车,客车货车上的应用,通过OBD读取货车商用车的车速,故障,油耗,里程等 J1939 协议简介 J1939是一个广泛应用在重型汽车,卡车,工程车和大客车商务车的CAN协议。大型车队各种商务车辆的管理,货车大客车的时时监控调度等等这些商用OBD应用使得J1939有着比较广泛的应用领域。 深圳芯方案公司开发的TDA芯片(TDA61,TDA66等)支持了J1939 ECU和诊断设备的绝大部分功能,TDA芯片还可以支持J1939的通讯协议的不同波特率(不同波特率需要改变可编程参数设置)基本可以与市面上绝大部分的商用车工程车货车通讯。但现在很多厂商根据J1939协议,自定义了很多应用层,所以在使用过程中可能会发现有异常现象,请反馈给我们,我们会尽快的修正。TDA芯片内部有方便的升级功能。TDA芯片自定商用车OBD指令用户无需了解J1939协议,即可直接获取货车,商用车ECU的各个参数。TDA芯片还拓展更多高级指令,用户可以直接得到当前车辆的油耗,里程。 TDA芯片J1939功能介绍 依照SAE J1939—81诊断型工具的规范 TDA芯片有以下功能: 一、 基本协议通讯功能 1、 在使用一个源地址前,发出有效的地址申明(可选) 2、 在接收到地址声明后TDA芯片可发送地址声明或不可声明源地址消息。 3、 名字域可编程(修改PP编程参数)。 4、 源地址可更换。 5、 TDA芯片能自动接收J1939定义两种多包数据,全局的广播BAM消息及特定地址的 RTS/CTS的多包消息,并能同时接收多个ECU同时发出的多个BAM数据消息和一个RTS/CTS多包数据。 二、 高级扩展应用指令 1、直接数据输出,各种常用数据无需二次转换,直接以十进制ASCII码回传汽车各参数(如转速,车速,水温等等) 2、高级数据指令,如油耗,里程,还支持多参数一次性读取。 三、 标准指令举例(客户亦无须了解J1939协议直接使用TDA指令读取各个参数) J1939(默认)的波特率根据J1939—11定义为250kbps, 也许有的应用使用其它的波特率,你可改变可编程参数PP 2B实现。 J1939协议定义, J1939消息头为29位ID,数据域长度最多8位(ISO15765是固定8位长的)诊断方法及其实际的数据传输链路层请查阅SAE J1939—73和SAE J1939—21 TDA芯片发送J1939消息的方法和标准的OBD2协议一样 ,头格式数据TDA芯片能定义并自动添加到消息中。 例:如你想请求ECU发动机温度的信息,J1939用PGN 00 FE EE参数组传输这个信息。你只要向TDA芯片发出: >EE FE 00 的OBD 命令 (高字节在后)。 TDA芯片会自动加上附加的头格式字节,并自动配置接收正确的响应消息,TDA芯片默认的头格式字节值为18 EA FF F9 表示为OBD诊断工具的全局请求: 18是优先级和数据页 EA为请求数据的PDF格式 FF为全局地址 F9为J1939定义的诊断工具源地址 改变头格式字节用AT SH xx xx xx 命令改变,高5位用AT CP xx设置。 TDA芯片的默认值对请求的响应消息可能是单个数据桢或多个数据桢(多包消息),TDA芯片都能正确返回数据并显示。如果是多包消息,TDA芯片自动为你处理应答内容,你不用关心它如何在接收多包消息时是如何应答的。J1939定义了两种格式的多包消息,一种是全局的BAM广播消息,还有一种是一对一的RTS/CTS控制多包消息,TDA芯片能同时接收多个ECU发出个多个BAM消息及一个RTS/CTS消息,完全符合J1939要求。 接收RTS/CTS多包消息,TDA芯片自动发送CTS控制消息, 这个和ISO15765不同,TDA芯片在用CFC0关闭时,不影响J1939协议时TDA芯片的CTS发送。对于BAM多包消息, J1939定义不用发送控制消息,TDA芯片能自动接收并返回给PC。CAF0及CAF1只是影响J1939返回数据的显示格式,在TDA芯片发送时不影响。 当CAF1时J1939与ISO15765一样,显示数据总长度及消息包的编号,CAF0时仅返回全部的数据域的数据。ATH1打开头格式显示时返回整个消息包的内容。 SAE J1939预定义了一些诊断模式,第一个是诊断模式DM1。 在J1939的CAN网络系统中,诊断模式(DM1)消息周期性的在总线上广播(如果有故障码)。如果想监听总线上的DM1消息,只要简单地使用内部命令DM1: >AT DM1 TDA芯片将会在收到DM1消息时把信息的内容返回给PC。 当想监听其他内容的诊断消息时,只要用AT MP 命令用参数组编号来监听,。 例如:DM2的参数组编号为65227即16进制数00 FE CB ,TDA芯片只要输入后4位数,前面两位默认值为”00” ,所以监听DM2诊断消息则输入: >AT MP FE CB TDA芯片发出J1939的OBD命令时根据命令的字节数来分成两种类型的接收方法,当发送的命令为三个字节长度时,TDA芯片认为这是个PGN(参数据编号)请求,例:前面的“>EE FE 00” OBD命令。TDA芯片将只接收该PGM消息的响应。如果不是3字节长,TDA芯片作为一般的命令处理,将只接收发送给目标地址为TDA芯片源地址(F9)的消息。 J1939的地址、名字及申明 TDA芯片源地址默认为OBD标准地址F9,可通过PP 0E更改其默认值。TDA芯片的J1939名字由8字节组成的64位,可通过改变PP 19 1A …20的内容更改。 TDA芯片可用 AT ADC1/AT ADC0内部命令设定是否进行地址申明,默认为TDA芯片不进行地址申明。注:根据J1939要求在使用源地址前必须进行原地址申明。 J1939定义,控制应用程序CA(诊断仪)的名字是个64位标识符,由十个域组成,其中6个域由J1939标准定义的给出,其余4个域由网络特性及汽车架构给出或者由生产商给出。 TDA芯片的设定名字或地址时必须附给J1939定义,否则可能会引起总线地址冲突。 64位名字格式组成如下 `
|