| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 汽车总线协议15765-2(2005)CANFD协议研究 -> 正文阅读 |
|
[网络协议]汽车总线协议15765-2(2005)CANFD协议研究 |
目录 协议框架ISO 15765的这一部分是为了定义在控制器区域网络(CAN)通信链路上实施的车辆诊断系统的通用要求,如ISO 11898 -1所规定的。虽然它主要用于诊断系统,但它也满足其他基于can的系统对网络层协议的需求。为了实现这一目标,它基于ISO/IEC 7498-1和ISO/IEC 10731的开放系统互连基本参考模型(Open Systems Interconnection Basic Reference Model, OSI),将通信系统划分为7个层次,如表1所示。 ??传输协议和网络层服务?ISO 11898-1指定可变长度的CAN帧,其最大有效载荷大小取决于所使用的协议设备。标准CAN协议设备可以发送/接收每帧有效载荷大小从0字节到8字节不等的帧。CAN FD (flexible data rate,灵活数据速率)协议设备可以收发0 ~ 64字节的帧。CAN FD协议设备也能够发送/接收标准CAN帧。 ISO 15765的这一部分提供了传输协议和网络层服务,以支持不同的应用层实现,如 增强的车辆诊断(立法功能之外的与排放相关的系统诊断,非排放相关的系统诊断), ISO 15031中规定的与排放相关的车载诊断(OBD), ISO 27145中规定的全球协同车载诊断(WWH-OBD), 船上烟火装置的寿命结束激活(ISO 26021)。 传输协议指定了一个未经确认的通信。 注:ISO 15765的这一部分并不能决定标准CAN、CAN FD或两者是否被其他引用ISO 15765这一部分的标准推荐或要求实施。 术语、定义和缩写术语
?文档概述? ISO 11898-1 CAN数据链路层扩展标准CAN和CAN FD帧特征比较 ISO 11898-1 标准 CAN帧支持最大8字节的有效载荷长度。ISO 11898-1 CAN FD帧支持最大64字节的有效载荷长度。因此,使用首帧 (FF)、流控帧 (FC)和连续帧 (CF)类型帧的分段数据传输需要在不改变原始协议概念的情况下,通过可变的可配置有效载荷长度来实现。SF帧类型也适应于支持CAN FD帧允许的增加的有效载荷长度。 CAN帧特征比较
?对于标准 CAN, DLC值为9..15自动减少到8的值,这导致了标准CAN的最大的可能CAN_DL。 CAN FD不支持8字节到64字节之间的所有有效载荷长度(例如,一个CAN FD帧有10个有效数据却要求长度为12 字节的有效荷载长度)。 传输协议和网络层服务的CAN参数说明 下图显示了CAN参数到网络/传输层寻址信息N_AI的映射。说明了网络/传输层参数的有效性和适用性,以及由此产生的对标准CAN与CAN FD数据链路层的支持。图描述了使用普通或普通固定寻址的示例。对于扩展寻址和混合寻址,这个概念通常也适用,但N_AI参数到CAN帧的映射是不同的。 ?DLC值是CAN_DL值(n)的反馈,其表示了一个CAN帧数据/有效载荷的物理长度;在接收端,CAN_DL用来确定发送端TX_DL的值。 比特率开关(BRS)定义了数据阶段的传输速度。 标准CAN/CAN FD数据长度比较表 ? ?对于标准 CAN, DLC值为9..15会自动减少到8的值,从而导致标准 CAN的最大CAN DL为8. CAN FD的附加要求 如果使用CAN FD协议设备,ISO 15765的这一部分可以配置为创建标准CAN或CAN FD类型帧。当在数据链路层启用CAN FD类型帧时,需要支持以下两个新选项。 a) BRS比特率切换标志,是CAN FD帧的一部分,用于确定数据阶段是否要以不同于仲裁阶段的比特率传输。数据阶段的比特率被定义为等于或高于仲裁比特率。比特率交换不会影响传输协议本身。 b)最大允许有效载荷长度[CAN_DL, 8 ..64个字节); 网络层的概述定义了两种类型的服务: 通讯服务: 这些服务(其中定义了以下内容)支持最多4 294 967 295字节的数据传输。 1) N_USData.request:该服务用于请求数据传输。如果有必要,网络层会对数据进行分段。 2) N_USData_FF.indication:该服务用于向上层发出分段消息接收开始的信号。 3) N_USData.indication:该服务用于向上层提供接收到的数据。 4) N_USData.confirm:该服务向高层确认请求的服务已经被执行(成功与否)。 协议参数设置服务: 这些服务(定义如下)允许动态设置协议参数。 1) N_ChangeParameter.request:该服务用于请求特定内部参数的动态设置。 2) N_ChangeParameter.confirm:该服务向上层确认更改特定协议的请求已经完成(成功或失败)。 网络层内部运行网络层的内部操作提供了分割、使用流控帧传输和重组的方法。网络层的主要目的是传输可能适合或不适合单个CAN帧的消息。不能装入单个CAN帧的消息被分割成多个部分,每个部分都可以在一个CAN帧中传输。 单帧传输 多帧分段传输 ?流控帧用来调整发送端到接收端网络层的能力。这种流量控制方案允许使用诊断网关和子网。 网络层业务所有网络层服务具有相同的总体结构。要定义服务,需要指定以下三种类型的服务原语: 一种服务请求原语,由更高的通信层或应用程序使用,以传递需要传输到网络层的控制信息和数据; 一种服务指示原语,由网络层用于将状态信息和接收的数据传递给上层通信层或应用程序; 一种服务确认原语,由网络层用来将状态信息传递给更高的通信层或应用程序。 该服务规范没有指定应用程序编程接口,而是只指定一组独立于任何实现的服务原语。 所有网络层服务都具有相同的通用格式。服务原语是这样写的: ?其中“service_name”是服务的名称,例如N_USData, “type”表示服务原语的类型, “参数A,参数B,[参数C…]是N_SDU作为由服务原语传递的值列表。 方括号表示参数列表的这一部分可以为空。 ISO 15765的本部分指定了以下服务原语:request、indication和confirm。 使用服务原语请求(service_name.request),服务用户向服务提供者请求服务。 使用服务原语指示(service_name.indication),服务提供者将网络层的内部事件或对等协议层实体服务用户的服务请求通知服务用户。 使用服务确认原语 (service_name.confirm),服务提供者将服务用户的前一个服务请求的结果通知给服务用户。 网络层服务原语的规范N_USData. Request 确认服务由网络层发出。服务原语确认N_USData的完成。由N_SA、N_TA、N_TAtype[和N_AE]中的地址信息标识的请求服务。 N_USData. Confirm 确认服务由网络层发出。是对服务原语确认N_USData. Request的完成。由N_SA、N_TA、N_TAtype[和N_AE]中的地址信息标识的请求服务。参数<N_Result>提供了服务请求的状态。 ?N_USData_FF.indication N_USData_FF.indication表示服务是由网络层发出的。服务原语向相邻的上层表明从对等协议实体接收到的分段消息的首帧 (FF)到达,由N_SA、N_TA、N_TAtype[和N_AE]中的地址信息标识(参数定义见8.3)。该指示应在收到分段报文的FF时发生。 ?N_USData. Indication N_USData. Indication表示服务是由网络层发出的。服务原语表示<N Result>事件,并将从N_SA、N_TA、N_TAtype[和N_AE]中的地址信息识别的对等协议实体接收到的<MessageData>和<Length>字节下发到相邻上层。只有当<N_Result> = N_OK时,<MessageData>和<Length>参数才有效。 N_USData. Indication指示服务调用在接收到单帧(SF)消息后发出,或作为分段消息接收完成(或失败)的指示。 如果网络层在SF中检测到任何类型的错误,则该消息将被网络层忽略,并且没有N_USData. Indication应向相邻的上层发出指示。 服务数据单元规范 Mtype的取值范围:诊断、远程诊断。 如果Mtype = 诊断,则地址信息N_AI由参数N_SA、N_TA和N_TAtype组成。 如果Mtype = 远程诊断,则地址信息N_AI由参数N_SA、N_TA、N_TAtype和N_AE组成。 N_AI,地址信息 N_AI参数用于标识消息发送者和接收者的源地址(N_SA)、目标地址(N_TA),以及消息的通信模型(N_TAtype)和可选的地址扩展(N_AE)。 允许的N_TAtype通信模型组合 物理寻址(1对1通信)应支持所有类型的网络层消息。 功能寻址(1到n通信)应只支持单帧传输。 一个增强诊断工具标准 CAN请求正常的示例寻址(N_TAtype #2) ?一个增强的诊断工具CAN FD请求正常寻址 ?< N_Result > 取值范围:N_OK、N_TIMEOUT_A、N_TIMEOUT_Bs、N_TIMEOUT_Cr、N_WRONG_SN、N_INVALID_FS、N_UNEXP_PDU,N_WFT_OVRN,N_BSUFFER_OVFLW,N_ERROR 描述:该参数包含与服务执行结果相关的状态。如果同时发现两个或两个以上的错误,则网络层实体在向较高层指示错误时,应使用该列表中最先发现的参数值。 N_OK、 这个值表示服务执行已经成功完成;它可以同时发送给发送方和接收方的服务用户。 N_TIMEOUT_A、 当定时器N_Ar/N_As已经传递了它的超时值N_Asmax/N_Armax时,这个值被发送给协议用户;它可以发送给发送方和接收方的服务用户。 N_TIMEOUT_Bs、 当定时器N_BSs已经传递了它的超时值N_BSsmaxi时,该值将被发送给业务用户,它只能被发送方的业务用户发送。 N_TIMEOUT_Cr、 当计时器N_Cr已经传递了它的超时值N_Crmax时,这个值将被发送给业务用户,它只能在接收端发送给业务用户。 N_WRONG_SN、 该值在收到意外的SequenceNumber (PCI.SN)值时被发送给服务用户;它只能发送给接收方的业务用户。 N_INVALID_FS、 当一个无效的或未知的FlowStatus值在一个FC (流控帧) N_PDU中被接收时,这个值被发送给业务用户;它只能发送方的服务用户。 N_UNEXP_PDU, 该值在接收到意外协议数据单元时被发送给服务用户;它只能发送给接收方的业务用户。 N_WFT_OVRN, 当接收端连续发送了N_WFTmax 流控帧 N_PDU且FlowStatus = WAIT时,不能满足发送FlowStatus = ClearToSend的流控帧 N_PDU的性能要求时,发送给业务用户。它只能发送给接收方的业务用户。 N_BSUFFER_OVFLW, 该值在收到FlowStatus = OVFLW的FC (流控帧) N_PDU时发送给业务用户。它表明分段消息传输的接收端缓冲区不能存储首帧 DataLength (FF_DL)参数指定的字节数,因此分段消息的传输被中止。它只能发送方的服务用户。 N_ERROR 这是一般的错误。当网络层检测到错误,且没有其他参数值可以更好地描述错误时,发送给业务用户。它可以同时发送给发送方和接收方的服务用户。 传输层协议传输层协议应执行以下功能: 传输/接收多达4 294 967 295数据字节的消息;发送/接收完成(或失败)的报告。 单帧传输 TX_DL = 8的单帧传输 通过传输一个唯一的N_PDU,称为SF(参见图7),可以传输多达6个(TX_DL - 2,在扩展或混合寻址的情况下)或7个(TX_DL - 1,在普通寻址的情况下)数据字节的消息。 接收最多6或7个字节数据的消息是通过接收唯一的N_PDU来完成的。 ?TX_DL>8的单帧传输 传输TX_DL - 3(在扩展或混合寻址的情况下)或TX DL - 2(在普通寻址的情况下)数据字节的消息通过传输一个唯一的N_PDU,称为SF来执行。 通过接收唯一的N_PDU来接收TX_DL - 3或TX_DL - 2数据字节的消息。 多帧传输 长消息的传输是通过将消息分段并发送多个N_PDU来完成的。接收较长的消息是通过接收多个N_PDU并重组接收到的数据字节(连接)来完成的。这多个N_PDU分别被称为首帧(用于消息的第一个N_PDU)和连续帧(用于后续的所有N_PDU)。 ?????? 通过使用流控帧协议数据单元(FC N_PDU),多个N_PDU消息的接收者可以通过流控帧机制调整传输吞吐量以适应其能力。 ?????? 大于所使用TX_DL所允许的最大SF_DL的消息将被分割; ?????? 一个首帧协议数据单元(FF N_PDU),包含第一组数据字节,和一个或多个连续帧协议数据单元(CF N_PDU),每个单元包含连续的数据字节集。最后一个(或唯一的)CF N_PDU包含最后一组数据字节。 ?????? 消息长度在FF N_PDU中传输。所有CF N_PDU都由发送端编号,以便接收端按照相同的顺序重新组装。 流控帧机制允许接收方通知发送方接收方的能力,发送方应该遵守这些能力。 ?BlockSize (BS):接收方允许发送方在等待授权之前发送的N_PDU的最大数量,以继续发送以下N_PDU。当接收方将BS设置为零时,发送方无需等待授权即可继续发送。 SeparationTime minimum (STmin):发送端在发送两个CF N_PDU之间等待的最小时间。 由于BS和STmin的值是由每一个接收到的流控帧帧提供的,所以对于一个分段消息的接收者来说,采用这些值有两种不同的方式: dynamic:此消息后续的PDU通信更新BS和STmin; static:固定的BS和STmin值用于此消息的通信。 所有的block,除了最后一个,将由BS 个N_PDU组成。最后一个将包含剩余的N_PDU(从1到BS)。 每次发送/接收端等待接收/发送端发送的N_PDU时,一个超时机制允许检测传输失败。 通过FC N_PDUs,接收方授权的可能性传播以下CF N_PDUs延迟传播授权或拒绝接待一个分段的信息在传输的字节数超过的字节数,可以存储在接收缓冲区: ?????? FC.CTS:继续发送,授权继续; ?????? FC.WAIT:请求继续等待; ?????? FC.OVFLW:缓冲区溢出,表示分段消息的首帧中指定的字节数超过了接收实体缓冲区中可以存储的字节数。 ?????? FC数量有上限。等待接收端允许发送一行,称为N_ WFTmax。该参数为系统设计常量,不在FC N_PDU中传输。 传输层协议数据单元ISO 15765的这一部分规定了四种不同类型的传输层协议数据单元,单帧(SF N_PDU),首帧(FF N_PDU),连续帧(CF N_PDU)和流控制(FC N_PDU),它们用于在对等网络层实体之间建立通信路径,交换通信参数,传送用户数据,释放通信资源。 SF N_PDU SF N_PDU由单帧协议控制信息(SF N_PCI)标识。SF N PDU由发送网络实体发送,可以被一个或多个接收网络实体接收。它的发送是为了传输一个业务数据单元,该业务数据单元可以通过单个服务请求传输到数据链路层,以及传输未分段的消息。 ?FF N_PDU FF N_PDU由FF N_PCI (首帧 protocol control information)协议控制信息标识。FF N_PDU应由发送网络实体发送,并在分段消息传输期间由唯一的接收网络实体接收。它标识由网络发送实体发送的分段消息的第一个N_PDU。接收网络层实体应在收到一个FF N_PDU后开始组装分段消息。 CF N_PDU CF N_PDU由连续帧协议控制信息(CF N_PCI)标识。CF N_PDU传输业务数据单元消息数据(<MessageData>)的段(N_Data)。发送实体在FF N_PDU之后发送的所有N_PDU都要编码为CF N_PDU。接收实体在收到最后一个CF N_PDU后,将组装好的消息传递给网络接收实体的业务用户。CF N_PDU应由发送网络实体发送,并在分段消息传输期间由唯一的接收网络实体接收。 FC N_PDU FC N_PDU由流控帧协议控制信息(FC N_PCI)标识。FC N_PDU用来指示正在发送的网络实体启动、停止或恢复CF N_PDU的传输。它应由接收网络层实体发送给发送网络层实体,当准备接收更多数据时,经过正确的接收FF N_PDU,或如果还需要发送连续帧s,则为一个连续帧块的最后一个CF N_PDU。 ?FC N_PDU也可以通知发送网络实体暂停传输CF N_PDUs分段消息传输或中止期间一个分段的信息如果长度信息的传播(FF_DL) FF N_PDU通过发送接收实体的实体超过缓冲区的大小。 协议数据单元字段描述?N_PDU格式 地址信息(N_AI) ?????? N_AI用于识别网络层通信的对等实体。N_SDU (N_SA, N_TA, N_TAtype[和N_AE])接收到的N_AI信息应被复制并包含在N_PDU中。如果N_SDU接收到的消息数据(<MessageData>和<Length>)需要对网络层进行分段,以便传输完整的消息,则需要将N_AI复制(重复)到每一个传输的N_PDU中。 此字段包含地址信息,用于标识交换的消息的类型以及发生数据交换的接收者和发送者。 协议控制信息(N_PCI) 该字段标识交换的N_PDU的类型。它还用于在通信网络层实体之间交换其他控制参数。 N_PCI
?N_PCI字节的摘要 带有CAN_DL> 8的消息应该使用转义序列,其中字节#1的下一段被设置为0(无效长度)。这对网络层表示SF_DL的值是根据帧中的下一个字节(字节#2)确定的。因为CAN_DL被定义为大于8,所以这个定义只对CAN FD类型的帧有效。 大于4 095字节的消息应使用转义序列,其中字节#1的下一低字节和字节#2中的所有位被设置为0(无效长度)。这对网络层表示FF_DL的值是根据帧中接下来的32位来确定的。 数据 字段(N_Data) ?????? N_PDU中的N_Data用于传输N_USData中<MessageData>参数接收到的业务用户数据。服务调用请求。如果需要,将<MessageData>分割为更小的部分,每个部分在通过网络传输之前都适合N_PDU数据字段。N_Data的大小取决于N_PDU类型、选择的地址格式和TX_DL的值。 传输数据链路层数据长度(TX_DL)配置传输数据链路层数据长度(TX_DL)为实现网络层的应用程序配置数据链路层的最大可用有效载荷长度,如ISO 15765的这一部分中定义的那样。TX_DL值被定义为以字节为单位的实际有效载荷长度。 有效的TX_DL值是从8到15之间的数据长度代码(DLC)值的有效载荷长度派生而来的(参见ISO 11898-1:2015, DLC表)。 ?处理入站CAN帧的完整状态流程图 网络层的状态机超时值被定义为高于性能要求的值,以确保系统正常工作,并克服性能要求绝对无法满足的通信条件(例如高总线有效载荷)。指定的超时值应被视为任何给定实现的下限。真正的超时不应晚于指定的超时值+ 50%。 一个未分段消息的网络层计时参数 1 发送方N_USData.req:会话层向传输/网络层发送一个未分段的消息 发送方L_Data.req:传输/网络层将SingleFrame传输给数据链路层,并启动N_As计时器。 接收器L_Data.ind:数据链路层向传输/网络层发送接收CAN帧Receiver N_USData。传输/网络层向会话层发送未分段消息的完成。 2 发送方L_Data.ind:数据链路层向传输/网络层确认CAN帧已被确认;发送端停止N_As定时器 发送方N_USData.con:传输/网络层向会话层提出未分段消息的完成。 一个分段消息的网络层定时参数 ?????? 1 ?????? 发送方N_USData.req:会话层向传输/网络层发送分段消息 发送方L_Data.req:传输/网络层向数据链路层传输首帧,并启动N_As计时器 2 接收器L_Data.ind:数据链路层向传输/网络层发送CAN帧的接收; 接收端启动N_Br定时器 接收端N_USDataFF.ind:传输/网络层向会话层发送接收分段消息的首帧 发送方L_Data.ind:数据链路层向传输/网络层确认CAN帧已被确认;发送端停止N_As定时器,启动N_Bs定时器 3 接收器L_Data.req:传输/网络层向数据链路层发送流控帧 (ContinueToSend and BlockSize value = 2),并启动N_Ar定时器; 4 发送方L_Data.ind:数据链路层向传输/网络层发送CAN帧的接收;发送端停止N_Bs定时器,启动N_Cs定时器 接收器L_Data.ind:数据链路层向传输/网络层确认CAN帧已被确认;接收端停止N_Ar定时器并启动N_Cr定时器; 5 发送方L_Data.req:传输/网络层发送第一个连续帧到数据链路层,并启动N_As定时器 6 接收器L_Data.ind:数据链路层向传输/网络层发送CAN帧的接收;接收端重新启动N Cr定时器 发送方L_Data.ind:数据链路层向传输/网络层确认CAN帧已被确认;发送端停止N_As定时器,并根据前一个流控帧的分离时间值(STmin)启动N_Cs定时器 7 发送方L_Data.req:当N_Cs定时器经过(STmin)时,传输/网络层向数据链路层发送下一个连续帧,并启动N_As定时器 8 接收器L_Data.ind:数据链路层向传输/网络层发送CAN帧的接收;接收端停止N_Cr定时器并启动N_Br定时器 发送方L_Data.ind:数据链路层向传输/网络层确认CAN帧已被确认;发送端停止N_As定时器并启动N_Bs定时器;发送方正在等待下一个流控帧。 9 接收器L_Data.req:传输/网络层向数据链路层传输(流控帧),并启动N_Ar定时器 10 发送方L_Data.ind:数据链路层向传输/网络层发送CAN帧的接收;发送方重启N_Bs定时器 接收器L_Data.ind:数据链路层向传输/网络层确认CAN帧已被确认;接收端停止N_Ar定时器并启动N_Br定时器 11 接收器L_Data.req:传输/网络层向数据链路层发送流控制(ContinueToSend),并启动N_Ar定时器 12 发送方L_Data.ind:数据链路层向传输/网络层发送CAN帧的接收;发送端停止N_Bs定时器,启动N_Cs定时器 接收器L_Data.ind:数据链路层向传输/网络层确认CAN帧已被确认;接收端停止N_Ar定时器并启动N_Cr定时器 13 发送方L_Data.req:传输/网络层向数据链路层传输连续帧并启动N_As定时器 14 接收器L_Data.ind:数据链路层向传输/网络层发送CAN帧的接收;接收端重启N_Cr定时器 发送方L_Data.ind:数据链路层向传输/网络层确认CAN帧已被确认;发送端停止N_As定时器,并根据前一个流控帧的分离时间值(STmin)启动N_Cs定时器 15 发送方L_Data.req:当N_Cs定时器经过(STmin)时,传输/网络层向数据链路层发送最后一个连续帧,并启动N_As定时器 16 接收器L_Data.ind:数据链路层向传输/网络层发送CAN帧的接收;接收器停止N_Cr定时器 接收器N_USData.ind传输/网络层向会话层发送分段消息的完成。 发送方L_Data.ind:数据链路层向传输/网络层确认CAN帧已被确认;发送端停止N_As定时器 发送方N_USData.con:传输/网络层向会话层提出分段消息的完成。 网络层定时参数-分段消息网络层超时错误处理
数据链路层用法数据链路层服务参数 <Data>: CAN帧数据; <DLC>:数据长度代码; <Identifier>:CAN标识符; <Transfer_Status>:传输状态; <Format>:帧格式(CAN, CAN FD, base: 11-bit, extended: 29-bit) 数据链路层接口 L_Data. Request 服务原语请求传输<Data>,将其映射到通过<Identifier>选择的数据链路协议数据单元的特定属性中。 ?L_Data. Confirm ??L_Data. Indication 服务原语表示一个数据链路层事件到相邻的上层传递由<Identifier>标识的< data >: 普通寻址 定义了N_PDU参数到CAN帧的映射,其中寻址格式为normal, N_TAtype表示消息是物理的。 N_PDU参数到CAN帧的映射TAtype = 1、3、5和7 ?N_PDU参数到CAN帧的映射,其中寻址格式为normal, N_TAtype表示消息是功能性的 N_PDU参数到CAN帧的映射N_TAtype = #2、#4、#6和#8 普通固定寻址 普通固定寻址是普通寻址的一个子格式,它进一步定义了地址信息到CAN标识符的映射。在普通寻址的一般情况下,如上所述,N_AI和CAN标识符之间的通信是开放的。 对于普通的固定寻址,只允许29位的CAN标识符。根据目标地址类型(N_TAtype)定义了地址信息(N_AI)到CAN标识符的映射关系。N_PCI和N_Data被放在CAN帧数据字段中。 正常固定寻址,N_TAtype = #5和# 7 ?普通固定寻址,其中N_TAtype表示消息是功能性的 扩展寻址 N_PDU参数到CAN帧的映射,其中地址格式被扩展,N_TAtype表示消息是物理的。 N_PDU参数到CAN帧的映射TAtype = 1、3、5和7 ?N_PDU参数到CAN帧的映射,其中地址格式被扩展,N_TAtype表示消息是功能性的。 N_PDU参数到CAN帧的映射TAtype = 2 4 6 8 混合寻址 当“Mtype”设置为“远程诊断”时,采用“混合寻址”的寻址格式。 据目标地址类型(N_TAtype)定义了地址信息(N_AI)到29位CAN标识符方案和第一个CAN帧数据字节的映射。N_PCI和N_Data被放在CAN帧数据字段的剩余字节中。 ?29位CAN标识符的混合寻址,N_TAtype = #5和# 7 ?29位CAN标识符的混合寻址,N ttype = #6和8 ?11位CAN标识符,当“Mtype”设置为“远程诊断”时,采用“混合寻址”的寻址格式。 定义了地址信息(N_AI)与11位CAN标识符方案的映射关系。对于N_SA、N_TA和N_TAtype的每一个组合,都可以使用相同的CAN标识符。N_AE被放在CAN帧数据字段的第一个数据字节中。N_PCI和N_Data被放在CAN帧数据字段的剩余字节中。 11位CAN标识符的混合寻址,N_TAtype = #1和# 3 ?11位CAN标识符的混合寻址,N_TAtype = #2和# 4 ?CAN帧数据?CAN帧数据填充(TX_DL = 8) 如果采用这种解决方案,即使要传输的N_PDU小于8字节,也总是将DLC设置为8。发送方必须填充帧中任何未使用的字节,如表所示。特别是对于SF、FC帧或分段消息的最后一个CF。如果没有指定不同的值,默认值CC(hex)应该用于帧填充,以最小化填充位插入和线上的位改变。 CAN帧的DLC参数由发送端设置,接收端读取,以确定网络层每一帧需要处理的数据字节数。DLC参数不能用来确定消息长度;该信息将从消息开头的N_PCI信息中提取。 数据填充示例(TX_DL = 8),普通寻址,N_PDU大小6字节,DLC = 8 ?CAN帧数据优化(TX_DL = 8) 如果使用这个解决方案,DLC并不总是需要是8。如果要发送的N_PDU小于8字节,则发送方可以优化CAN总线负载,将CAN帧数据缩短为只包含N_PDU占用的字节数(不填充未使用的数据字节)。CAN帧数据优化只能用于SF、FC帧或分段消息的最后一个CF。 CAN帧的DLC参数由发送端设置,接收端读取,以确定网络层每一帧需要处理的数据字节数。DLC参数不能用来确定消息长度;该信息将从消息开头的N_PCI信息中提取。 数据优化的例子(TX_DL = 8),普通寻址,N_PDU大小6字节,DLC = 6 ?CAN FD帧强制填充(TX_DL > 8) 根据ISO 11898-1,从0到8的数据长度码(data length code, DLC)指定了CAN帧的有效载荷长度(byte)(1:1映射)。对于N_PDU长度,值最多为8字节,可以是数据填充或DLC数据优化。 ISO 11898-1的DLC值从9到15被分配到非线性离散值的CAN帧负载长度高达64字节。为了防止传输未初始化的数据,当要传输的N_PDU大小的长度大于8,且不等于ISO 11898-1:2015 DLC表中定义的离散长度值之一时,必须使用CAN帧数据填充。表36给出了一个例子。对于从9到15的DLC值,只有强制填充应使用。如果没有指定不同的值,默认情况下应该将值CC(hex)用于填充,以最小化填充位插入和导线上的位改变。 CAN帧的DLC参数由发送端设置,接收端读取,以确定网络层每一帧需要处理的数据字节数。DLC参数不能用来确定消息长度;该信息将从消息开头的N_PCI信息中提取。 数据填充示例(TX_DL > 8),普通寻址,N_PDU大小11字节,DLC = 9 ?注意 ISO 11898-1:2015, DLC表值9导致CAN FD帧有效长度为12字节。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:51:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |