ISO 15765-2也称为ISO-TP( TP表示传输层,Transport Layer),是在控制器局域网络(CAN)上传输网络封包的国际标准。传统CAN讯息,每一帧的资料最多只有八个字节,透过ISO-TP可以传输超过八个字节的资料。ISO-TP会将长资料封包拆成许多的资料帧,其中再加入一些编码资料,方便传送端及接收端解读各资料帧,并且让接收端可以将许多的资料帧还原成原始讯息。ISO-TP的一个资料封包的最大酬载为4095字节。
在OSI模型中,ISO-TP对应第三层(网络层)及第四层(传输层)。ISO-TP最常见的应用是针对有OBD-2设备的车辆,用KWP2000或统一诊断服务(UDS)传输诊断讯息,不过ISO-TP也可以用在其他特定的CAN通讯协定中。
ISO-TP有二种运作的模式,有一种是不加额外的位址字节,只利用CAN ID来定址,称为正常定址(normal addressing),另一种是会加上一个定位用的字节,称为延伸定址(extended addressing)。延伸定址会用CAN资料的第一个位元来作为定址用,资料帧的酬载量会因此再减少一个字节。为了简单起见,以下的说明都是以正常定址下进行的。ISO 15765-2通讯协定允许六种定址方式。
ISO-TP会使用八个字节的CAN资料帧中的一个或多个字节来存放元资料,因此酬载量最多只有七个字节。元资料称为协定控制资讯(Protocol Control Information),简称PCI。PCI可能是1-3个字节。最前面的第四位元说明帧的型态,也间接的说明PCI的长度。
ISO 15765-2是ISO 15765(道路车辆,在CAN网络上的诊断通讯)的一部分,其中分为四个部分:
ISO-TP定义了四种不同的帧:
单一帧可以传送小于等于七个字节以下的讯息,其第一字节为0,酬载长度为1至7字节。种类字段的数值为0,是比较简单的资料格式,开头字节是长度,不过若没有特别说明,很容易造成误解。
若讯息超过七个字节,可以用多重帧传送。首帧的PCI字段有二个字节,前4个位元是种类编码(1),之后的12个位元是讯息长度(不包括种类及长度位元)。接收端会确认此一传送,用流量控制帧回应。流量控制帧的PCI字段有三个字节,标示各帧之间的时间间隔,以及连续帧传送的方式(区块大小)。
第一个字节的前四个字元会包括种类编号(type = 3),后四个位元会说明是否允许传送(0 = 继续传送、1 = 等待、2 = 超载/结束)。下一个字节是区块大小(block size),在下一个流量控制帧之前可以传送的帧数量,若为0,表示剩下的帧都可以在没有流量控制的条件下传送。第三个字节是间隔时间(Separation Time、ST),二个帧之间的最小延迟时间。若数量小于127 (0x7F),表示以ms为单位的间隔时间,若数值在241 (0xF1) 至 249 (0xF9) 之间,表示间隔时间从 100 到 900 ms。间隔时间的定义是从前一个帧的结束到下一个帧的开始。在实作时,需要有严谨的实作,接受传送端可能将间隔时间定义为前一个帧的开始到下一个帧的开始的可能性(即帧传送率)。就算是很仔细的实现,也可能是因为位元填充机制增加位元数量而失效。
传送端之后会用连续帧来传送后续的资料。每一个连续帧都有一个字节的PCI,前四个位元对应type = 2,后面四个位元是索引号。索引号从1开始,每一个连续帧会加1(1, 2,..., 15, 0, 1,...),因此可以检测到遗漏的帧。第一笔资料会在首帧的后面送出,因此第一个连续帧的索引号会是1,依序往下递增,一直到15为止,再从0开始计数。长度字段12位元,因此封包的资料最多可以到4095字节。不过在实务上,典型应用的最大长度会比较短,因为是因为接收缓冲区或是硬件的限制。