tt99166 发表于 2024-9-30 10:03:40

拖拉机控制关键协议 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开始到255为止,用来标识多个包,方便接收端合并包。广播模式发送包,两包之间的延时要在50ms~200ms之间。非广播模式发送包,两包之间的发送延时要小于200ms。每一包的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正常传输流程,一般可导致中止连接的情况如下几种:
T1,在传输完数据之前,两包数据之间的时间间隔超过了250ms。T2,发出Clear to Send(TP.CM_CTS) 消息到接收到数据包的时间间隔超过1250ms。T3,两次Clear to Send(TP.CM_CTS) 消息间隔超过1250ms。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
数据传输DataTransfer

参数组名: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。
页: [1]
查看完整版本: 拖拉机控制关键协议 ISO-11783 协议解析