拖拉机控制关键协议 ISO-11783 协议解析

快速开始

应用层关注的主要内容是如何读写数据,对于ISOBUS,读写数据,即是如何控制车辆动作和获取车辆信息。

ISOBUS的实现读写数据的机制是“消息”。一切皆为消息(message)。一般的,每个消息的核心为一个参数组(parameter group),参数组主要分为几类:指令类、数据类和辅助类。

指令类:可以被执行,如控制开关、控制转向。

数据类:用来读取和写入的关键数据,如传感器值,组件ID等。

辅助类:辅助完成请求数据,应答数据、广播声明、分包传输管理等功能。

具体通讯的细节请参照后续章节的介绍。

 

注:标准文档将参数组的类型定义了5种(Command、Request、Broadcast/Request、Acknowledgement和Group Function)。这里为了便于理解分为3类。

协议关键要素定义

PDU

protocol data unit

一个完整的CAN数据帧

PGN

Parameter group number

由PDU中定义的DataPage、Format和Specific共同决定的,用以确定具体message 的种类。

Message

 

由相同PGN组成的一个或多个CAN数据帧

Packet

 

组成multi-packet message 的单个CAN数据帧

multi-packet message

 

当单个CAN数据帧不能完整传输完Message的全部数据时,采用多个含相同PGN的CAN数据完成数据传输。

SA

Source Address

定义消息从哪里发送

DA

Destination Address

定义消息发送到哪里

 

 

概述

ISOBUS协议是基于CAN2.0B协议的一个拓展。帧结构如所示。

 

PDU结构

PDU由七部分组成PRIO,Reserved,DP,PF,PS,SA,Data,

 

消息通讯

消息(Message)是ISOBUS定义的一种在CAN数据帧基础上,更高层的数据链路层通讯数据结构。消息支持传输高达1785(255包*7字节每包)个字节的应用程序数据。

由于CAN数据帧每一帧最大传输的数据量为8个字节,远远不能满足消息定义的最大传输容量,所以ISOBUS协议使用多个CAN数据帧分次发送的方法,逐步完成全部应用层数据的传输。

需要特别注意的是,发送拆分的数据包的过程中,有可能会有其他ISOBUS设备发送相同的消息帧,为了避免数据帧遭到插入造成数据破坏,接收端必须要能识别不同发送端发送的Messsage包,并分别合并成正确的Message。

 

消息的类型

消息类型有5大类

类型

英文名

PGN

 

指令

Command

 

 

请求

Request

59904

 

广播/ 响应

Broadcast/Response

 

 

应答

Acknowledge

59392

ACK和NACK

组功能

Group Funtion

 

 

 

应答类消息

应答类消息分为积极应答ACK(Positive Acknowledge)和消极应答NACK(negative Acknowledge)。

 

参数组

ISOBUS 主要通过PDU中的DP,PF和PS这3个域来定义消息的类型,并且为了方便描述,又将这三个域合称为PGN。

ISOBUS规定,根据PF的不同,PS的含义有2种,

PF

PS

0~239

目标地址

240~255

拓展参数

 

由此,当PF值为0~239时,称之为PDU1,由此PGN如下定义

PGN

最高位

 

最低位

DP

PF

0

 

当PF值为240~255时,此时的PDU称为PDU2,PGN如下定义

PGN

最高位

 

最低位

DP

PF

PS

 

 

 

传输协议功能

大量数据分包传输

当有大量数据构成的消息需要传输的时候,标准的CAN帧已经不能满足传输需求。ISO11738定义了一种分包发送大量数据的机制——多包消息(multi-packet message).

每个包的结构如下

 

CAN 帧的数据域

字节

byte1

byte2-byte8

内容

包序号

7个字节的数据块

  1. 包序号从1开始到255为止,用来标识多个包,方便接收端合并包。
  2. 广播模式发送包,两包之间的延时要在50ms~200ms之间。
  3. 非广播模式发送包,两包之间的发送延时要小于200ms。
  4. 每一包的DLC值都固定  为8,即使所需要传输的数据不足8个,也应将未用到的数据设置为0xFF。

连接管理

 

初始化连接

请求端发送Request to Send (TP.CM_RTS)消息,此消息中包含了接下来传输数据的总大小。目标接受连接请求需要回应Clear to Send(TP.CM_CTS) 消息,目标若不接受连接请求需要回应Connection Abort(TP.CM_CA)消息。

传输数据

请求传输数据端在收到Clear to Send(TP.CM_CTS) 消息后,开始Data Transfer(TP.DT)流程.流控制由接收端负责,当发送端传输过快,接收端可能来不及处理接收的数据时,接收端通过发送Clear to Send(TP.CM_CTS)消息,并将该消息的

结束连接

接收端接收完最后一个包后,回发一个结束连接消息end-of-message ack,用以通知传输完成,释放连接。

当传输出现异常时,发送端负责中止连接通过发送Connection Abort消息来完成。需要注意的时,接收端无权中止连接。

如图 1正常传输流程,一般可导致中止连接的情况如下几种:

  1. T1,在传输完数据之前,两包数据之间的时间间隔超过了250ms。
  2. T2,发出Clear to Send(TP.CM_CTS) 消息到接收到数据包的时间间隔超过1250ms。
  3. T3,两次Clear to Send(TP.CM_CTS) 消息间隔超过1250ms。
  4. T4,发出Clear to Send(TP.CM_CTS) 消息用以暂停数据传输到下一个Clear to Send(TP.CM_CTS) 消息之间的时间间隔超过550ms。

 

 

消息定义

连接管理

参数组名:Connection Management 连接管理

PGN定义:

PGN

DLC

DP

PF

PS

0

236

目标地址

8

60416

 

数据发送请求Request To Send (TP.CM_RTS) 

Data Field

1

2

3

4

5

6

7

8

 

控制字:16

总字节数

总包数

保留:

0xFF

 

所传输内容的PGN

 

 

数据过程管理Clear To Send (TP.CM_CTS)

Data Field

1

2

3

4

5

6

7

8

 

控制字:17

发送包数

下一包序号

保留:

0xFF

保留:

0xFF

 

所传输内容的PGN

 

 

结束消息传输End of Message Acknowledgement (TP.CM_EndofMsgACK)

Data Field

1

2

3

4

5

6

7

8

 

控制字:19

总字节数

总包数

保留:

0xFF

 

所传输内容的PGN

 

 

终止连接Connection Abort (TP.Conn_Abort)

Data Field

1

2

3

4

5

6

7

8

 

控制字:255

保留:

0xFF

 

保留:

0xFF

 

保留:

0xFF

 

保留:

0xFF

 

所传输内容的PGN

 

 

广播发送Broadcast Announce Message (TP.CM_BAM)

Data Field

1

2

3

4

5

6

7

8

 

控制字:32

总字节数

总包数

保留:

0xFF

 

所传输内容的PGN

 

 

 

数据传输Data Transfer

参数组名:Data Transfer数据传输(TP.DT)

PGN定义:

PGN

DLC

DP

PF

PS

0

235

目标地址

8

60160

 

Data Field

1

2

3

4

5

6

7

8

包序号

传输的数据内容

 

请求Request

 

PGN

DLC

DP

PF

PS

0

234

目标地址

(广播255)

3

60160

 

Data Field

1

2

3

 

 

 

 

 

请求内容的PGN

 

 

 

 

 

注:由于有些请求的数据可能超过8字节,对于超过8字节容量的数据,将会分多个包应答回来。

响应请求

 

 

应答Acknowledgement

PGN定义:

PGN

DLC

DP

PF

PS

0

232

目标地址

(广播255)

8

59392

 

Data Field

1

2

3

4

5

6

7

8

ACK:0

NACK:1

保留:

0xFF

请求的PGN

 

 

通讯场景

点对点通讯

发送端发起依次传输组件ID的数据通讯流程如下图所示。

 1正常传输流程

 

广播通讯

广播通讯不同于点对点的通讯模式,广播通讯每一包的发送间隔为50ms到200ms之间,超过或少于均会产生错误。接收广播数据无需进行应答,也不能进行流量控制。

 

请求数据

当需要获取指定数据时,请求端需要向应答端发送请求数据消息。应答端会根据请求的内容选择应答所请求的数据,如图 2 请求-应答所示的内容,或做出NACK的回应,如图 3 请求-不应答所示的流程。

 

2 请求-应答

 

3 请求-不应答

 

广播数据

在某些应用场景中,一台是被需要不断向总线上广播数据,通讯流程如图 4 广播数据所示。

 

4 广播数据

回馈指令(Command)的运行结果

为了执行某些特定动作,比如控制轮子转向,执行端必须给出某些反馈,这些反馈可以是ACK,当动作执行成功或完成;也可以反馈NACK,提醒指令执行失败,或直接通过读取某些数据来自行判断指令的执行状况。

 

常见问题汇总

Q:本协议是否支持超过8字节的数据传输?

A:通过数据传输协议支持单次最高传输1785字节应用层数据。

 

Q:什么是PDU?

A:PDU是ISOBUS 通讯的基本单元,是对CAN帧的具体定义。一个can帧有且只有一个PDU。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值