校验和有两种:经典校验和(classic checksum)和增强型校验和(enhanced checksum)。若使用经典校验和,则仅保护有用数据。若使用增强型校验和,则保护有用数据和PID。自2.0版协议起,增强型校验和用于ID为0到59的报文。为保持向下兼容,始终使用经典校验和保护诊断帧。
校验和的计算公式如下:
通过翻转八位和算法求得校验和,然后从任务将校验和进行传输。接收方根据同一算法计算接收的数据字节的校验和,但不取反。如果接收方计算所得的结果与接收到的校验和之和不等于0xFF,则接收方会检测到传输错误。
这种保护方法不是特别完善,但实现了用于子总线区域时所需的数据完整性,尤其适合含少量数据字节的无条件帧。这种保护方法的出错概率随着数据字节的增加而增加。