1 / 60

第九章  CAN 应用层协议

第九章  CAN 应用层协议. CAN 基本协议的应用 CANopen DeviceNet SAE J1939. CANopen 概述. CAN 和 CANopen 标准在 OSI 网络模型中的原理图. CAN 基本协议的应用. CAN 三层协议:物理层、数据链路层、应用层 应用层:明确 CAN 消息帧的 11 位标识符和 8 字节数据如何使用 CAN 协议只对物理层和数据链路层作了描述和规定,而对于应用层则没有说明。如果每个都可以为自己的产品设计一个应用层协议。不同厂商的设备之间不能互相操作. CANopen 概述. 应用层协议内容

gray-burks
Download Presentation

第九章  CAN 应用层协议

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第九章 CAN应用层协议 • CAN基本协议的应用 • CANopen • DeviceNet • SAE J1939

  2. CANopen概述 CAN和CANopen标准在OSI网络模型中的原理图

  3. CAN基本协议的应用 • CAN三层协议:物理层、数据链路层、应用层 • 应用层:明确CAN消息帧的11位标识符和8字节数据如何使用 • CAN协议只对物理层和数据链路层作了描述和规定,而对于应用层则没有说明。如果每个都可以为自己的产品设计一个应用层协议。不同厂商的设备之间不能互相操作

  4. CANopen概述 • 应用层协议内容 • 应用层提供一组服务和协议 • 通讯规范提供配置设备的方法和通讯数据,定义了设备之间的数据如何通讯。 • 设备规范为设备增加了设备相关的类行为

  5. CAL(CAN Application Layer) • CAL(CAN Application Layer)协议是目前基于CAN的高层通讯协议中的一种,提供了4种应用层服务功能 • CMS (CAN-based Message Specification) • CMS提供基于变量、事件、域类型的对象,以设计和规定一个设备(节点)的功能如何被访问(例如,如何上载下载超过8字节的一组数据(域),并且有终止传输的功能)。

  6. CAL(CAN Application Layer) • NMT (Network ManagemenT) • 提供网络管理(如初始化、启动和停止节点,侦测失效节点)服务。这种服务是采用主从通讯模式(所以只有一个NMT主节点)来实现的。

  7. CAL(CAN Application Layer) • DBT (DistriBuTor) • 提供动态分配CAN ID(正式名称为COB-ID,Communication Object Identifier)服务。这种服务是采用主从通讯模式(所以只有一个DBT主节点)来实现的。

  8. CAL(CAN Application Layer) • LMT (Layer ManagemenT) • LMT提供修改层参数的服务:一个节点(LMT Master)可以设置另外一个节点(LMT Slave)的某层参数(如改变一个节点的NMT地址,或改变CAN接口的位定时和波特率)。

  9. CAL(CAN Application Layer) • CMS为它的消息定义了8个优先级,每个优先级拥有220个COB-ID,范围从1到1760。剩余的标志(0,1761-2031)保留给NMT,DBT和LMT。 COB-ID越低优先级越高。

  10. CANopen协议介绍 • 通信接 口和协议软件用于提供在总线上收发通信对象的服务,不同CANopen设备间的通信是通过交换通信对象来完成的。 • 对象字典描述了设备使用的所有数据类型、通信对象和应用对象,对象字典位于通信程序和应用程序之间,用于向应用程序提供接口, • 应用程序对对象字典进行操 作,即可实现CANopen通信。它包括功能部分和通信部分,通信部分通过对对象字典进行操作实现CANopen通信,而功能部分则根据应用要求来实现。

  11. CANopen协议介绍 • CAL提供了所有的网络管理服务和报文传送协议,但并没有定义CMS对象的内容或者正在通讯的对象的类型。而这正是CANopen切入点。 • CANopen是在CAL基础上开发的,使用了CAL通讯和服务协议子集,提供了分布式控制系统的一种实现方案。 • CANopen的核心概念是设备对象字典(OD:Object Dictionary),对象字典不是CAL的一部分,而是在CANopen中实现的。

  12. 对象字典(OD) • 对象字典(OD:Object Dictionary)是一个有序的对象组;每个对象采用一个16位的索引值来寻址,为了允许访问数据结构中的单个元素,同时定义了一个8位的子索引,CANopen网络中每个节点都有一个对象字典。 • 对象字典包含了描述这个设备和它的网络行为的所有参数。

  13. 对象字典(OD)

  14. 对象字典(OD) • OD通过通信对象描述了设备的所有功能,介于应用程序和通信接口直接 • 在CANopen 网络系统中每个节点都有唯一的一个对象字典,而且每个节点的对象字典都具有相同的结构,但具体的内容要根据不同的设备而定,

  15. 通信模型 • 包括CANopen网络上的消息帧,以及其内容和功能。 • 管理消息 • 服务数据对象 • 过程服务对象 • 特殊功能对象

  16. 管理消息 • 层管理,网络管理和ID分配服务:如初始化,配置和网络管理(包括:节点保护)。 • Boot-up消息、Heartbeat消息、NMT消息 • 服务和协议符合CAL中的LMT,NMT和DBT服务部分。这些服务都是基于主从通讯模式:在CAN网络中,只能有一个LMT,NMT或DBT主节点以及一个或多个从节点。

  17. Boot-up消息 • 1: Start_Remote_node (0x01) • 2:Stop_Remote_Node (0x02) • 3: Enter_Pre-Operational_State (0x80) • 4: Reset_Node (0x81) • 5:Reset_Communication (0x82) • 6:设备初始化结束,自动进入Pre_Operational状态,发送Boot-up消息 • 通知NMT主节点已经到就绪状态

  18. Boot-up消息 • NMT-slave节点发布Boot-up报文通知NMT-Master节点它已经从initialising状态进入pre-operational状态。

  19. Heartbeat消息 • Heartbeat协议是为了解决错误控制,显示节点当前状态而引入的。Heartbeat消息周期性地由节点发出,表示该节点目前仍然在工作。

  20. NMT消息 • 由NMT主节点发送,迫使从节点状态转换。使用2B数据单帧,第一个数据字节是命令,第二个字节是目标节点的ID

  21. NMT消息 • 只有NMT-Master节点能够传送NMT Module Control报文。NMT Module Control消息不需要应答。NMT消息格式如下:

  22. NMT消息 • 通过节点保护服务,NMT主节点可以检查每个节点的当前状态,当这些节点没有数据传送时这种服务尤其有意义。

  23. 服务数据对象(SDO) • SDO提供客户访问服务器的对象字典(OD)的功能 • 访问者被称作客户 (client),对象字典被访问且提供所请求服务的CANopen设备别称作服务器(server)。 • 通过SDO服务,可以访问对象字典的条目,这些条目可能包含有任意长度的数据和数据类型。 • 客户的CAN报文和服务器的应答CAN报文总是包含8字节数据(尽管不是所有的数据字节都一定有意义)。一个客户的请求一定有来自服务器的应答。

  24. 服务数据对象(SDO) • SDO有2种传送机制:􀁺 • 加速传送(Expedited transfer):最多传输4字节数据 􀁺 • 分段传送(Segmented transfer) : 传输数据长度大于4字节

  25. 服务数据对象(SDO) • 为了进行标准的分段/DH速传送,SDO定义了6个确认服务(SDO下载,SDO上传,启动SDO上传,启动SDO下载,下载SDO段和上传SDO段)和一个非确认服务(中止SDO传送)。如:启动SDO下载协议与对象字典的关系

  26. 服务数据对象(SDO) • 一个节点向其它节点发送SDO时,所使用报文CAN—ID为600h+Node—ID 例如. 将值0x31FF写入节点0x01的索引为0x6012,子索引为2的对象字典中,对应的字节赋值,如图2所示。根据SDO协议,连接对象报文的标识符(COB—ID)为600h+01h=601h。Byte0为2B,表示客户向服务器发出下载请求。采用加速传送方式,并且显示字节长度。Bytel和2表示索引和子索引分别为6012h和2h。Byte3为02h,表示传送的数据为2个字节。Byte4和5表示传送数据值为0x31FF。

  27. 服务数据对象(SDO) • 通过使用索引和子索引(在CAN报文的前几个字节),SDO使客户机能够访问设备(服务器)对象字典中的项(对象)。 • SDO通过CAL中多元域的CMS对象来实现,允许传送任何长度的数据 • 协议是确认服务类型:为每个消息生成一个应答(一个SDO需要两个ID)。SDO请求和应答报文总是包含8个字节

  28. 过程数据对象PDO • 用来传输实时数据, 数据从一个生产者传到一个或多个消费者。数据传送限制在1到8个字节 • PDO通讯没有协议规定。PDO数据内容只由它的CAN ID定义,假定生产者和消费者知道这个PDO的数据内容。 • 每个PDO在对象字典中用2个对象描述:PDO通信参数和PDO映射参数,所謂PDO的映射,就是將PDO的數據指向對象字典的某個位置 • PDO消息的内容是预定义的

  29. 过程数据对象PDO • PDO訪問:由於PDO都是用來傳送較短且實時性較高的控制數據和狀態數據,因此,PDO數據在傳送時,是不會像SDO一樣,在數據包裡指定要對哪個Index進行操作,PDO在進行數據交換之前,要先設定好是對哪個Index操作的,這個動作就是PDO Mapping,映射好了PDO的數據對象,則PDO的數據就會被從站自動指向對象字典裡的某個Index  Sub-index上,這樣就加快了數據交換的效率。

  30. 过程数据对象PDO

  31. 过程数据对象PDO • 同步(通过接收SYNC对象实现同步) • 非周期:由远程帧预触发传送,或者由设备子协议中规定的对象特定事件预触发传送。 • 周期:传送在每1到240个SYNC消息后触发。 • 异步 • 由远程帧触发传送。 • 由设备子协议中规定的对象特定事件触发传送。

  32. 预定义消息或者特殊功能对象 • 同步:用来同步网络中节点,基于主从概念 • 时间戳:为设备提供一个时间标准 • 紧急事件:紧急事件由设备的内部错误触发,每个错误事件只发送一次,不重复发生。

  33. 预定义的连接设置 • 为了减小简单网络的组态工作量,CANopen定义了强制性的缺省标识符(CAN-ID)分配表。这些标志符在预操作状态下可用,通过动态分配还可修改 • 缺省ID分配表是基于11位CAN-ID,包含一个4位的功能码部分和一个7位的节点ID(Node-ID)部分。

  34. 预定义报文或者特殊功能对象

  35. CANopen标识符分配 • 使用预定义的主从连接集。ID是缺省的,不需要配置。如果节点支持,PDO数据内容也可以配置。 • 上电后修改PDO的ID(在预操作状态),使用(预定义的)SDO在节点的对象字典中适当位置进行修改。 • 使用CAL DBT服务:节点或从节点最初由它们的配置ID指称。节点ID可以由设备上的拨码开关配置

  36. 注意事项 • (1)在开发过程中不必要将CANopen协议中的各项内容都一一编写,只要根据应用的具体要求按照CANopen协议编写即可。对象字典都要通过软件实现,这是实现CANopen的关键。 • (2)组建对象字典时并没有必要把协议规定的所有项都包括进去,另外还要留出足够的空间,使得用户可以根据以后的具体需要向对象字典中添加功能项。 • (3)一般应用中,如果CANopen网络不复杂,使用预定义的标识符分配就能满足要求。对于特别大的系统,如果要制定标识符分配,这需要大量的软件编程。 • (4)对于CANopen网络中必须实现的管理功能,一般由一个节点来实现,但也可以由几个节点分别承担。尤其对于SYNC报文传输和标识符的分配,分开来实现会更好。

  37. DeviceNet • 设备层现场总线DeviceNet • DeviceNet是20世纪90年代中期发展起来的一种基于CAN技术的开放型、符合全球工业标准的低成本、高性能的通信网络。它通过一根电缆将PLC、传感器、光电开关、操作员终端、电动机、轴承座、变频器和软启动器等现场智能设备连接起来,是分布式控制系统减少现场I/O接口和布线树立、将控制功能下载到现场设备的理想解决方案

  38. DeviceNet • DeviceNet不仅可以作为设备级的网络,还可以作为控制级的网络,通过DeviceNet提供的服务还可以实现以太网上的实时控制。较之其它的一些现场总线, DeviceNet不仅可以接入更多、更复杂的设备,还可以为上层提供更多的信息和服务 • DeviceNet最初由Rockwell公司设计,目前由ODVA(Open DeviceNet Vendors Association)致力于支持DeviceNet产品和规范的进一步开发。此外,Rockwell, GE,ABB,Hitachi,Omron等公司也致力于DeviceNet的推广

  39. DeviceNet • DeviceNet的主要特点: ★ 采用基于CAN的多主方式工作 ★ 逐位仲裁模式的优先级对等通信建立了用于数据传输的生产者/消费者传输模型 ★ DeviceNet的直接通信距离最远为500m,通信速率最高可达500kb/s ★ DeviceNet上可容纳64个节点地址,每个节点支持的I/O数量无限制 ★ 采用短帧结构,传输时间短,受干扰的概率低,检错效果好 ★ 通信介质为独立双绞总线,信号与电源承载于同一电缆 ★ 支持设备的热插拔,无需网络断电 ★ DeviceNet的接入设备可选择光隔离设计,由外部供电设备与由总线供电的设备共享总线电缆

  40. DeviceNet • DeviceNet协议规范 —沿用了CAN协议标准所规定的总线网络的物理层和数据链路层,定义了不同的报文格式、总线访问仲裁规则及故障检测和故障隔离的方法

  41. DeviceNet • 物理层和介质 • 物理层规范定义了DeviceNet的总线拓扑结构以及网络元件,具体包括接地、粗缆和细缆混合结构、网络端接和电源分配 • 采用的典型拓扑结构是干线-分支结构 • 线缆包括(干线)和细缆(分支线),总线线缆采用五线制电缆,包括了2条信号线,2条24V电源线和一条屏蔽线,支持总线供电 • 设备连接可选用开放/封装端头两种 • 提供125/250/500Kbps三种可选的通讯波特率,最大拓扑距离为500米,每个网络段最大可达64个节点

  42. DeviceNet • 数据链路层 • 遵循CAN协议规范,并由CAN控制器芯片实现 • CAN是基于广播方式的协议,支持多主形式传输。传输的帧被分配一个标识符,每个节点根据标识符确定是否接收这些帧 • 提供数据帧、出错帧、远程帧和过载帧等多种帧格式,数据帧每帧信息都有CRC校验和其它校验措施,数据传输误码率极低,有严重故障的节点可自动从网络上切除 • 采用非破坏性逐位仲裁的方法解决共享介质总线访问冲突问题。网络上每个节点拥有一个唯一的标识符,这个标识符的值决定了仲裁中优先级的大小,优先级值小的节点在竞争仲裁中为获胜的一方

  43. DeviceNet • 数据通信方式 • 循环(Cyclic)方式:适用于一些模拟设备,可以根据设备的信号发生的速度,灵活设定循环进行数据通信的时间间隔 • 状态改变(Change of State)方式:适用于离散的设备,采用事件触发方式,当设备状态发生改变时才发生通信 • 选通(Strobed)方式:利用8B的报文广播,64个二进制位的值对应网络上64个可能的节点,通过位的标识,指定要求响应的从设备 • 查询(Polled)方式:I/O报文直接依次发送到各个从设备

  44. DeviceNet的网络通信 • DeviceNet 是一个基于连接的通信网络系统。一个DeviceNet 的连接提供了多个应用之间的路径。当建立连接时,与连接相关的传送会被分配一个连接ID(CID)。如果连接包含双向交换那么应当分配两个连接ID值。

  45. DeviceNet报文 • I/O报文:适用于实时性要求较高和面向控制的数据,它提供了在报文发送过程和多个报文接收过程之间的专用通信路径,通常使用优先级高的连接标识符,通过一点或多点连接进行信息交换,连接标识符提供了I/O报文的相关信息,在I/O报文利用连接标识符发送之前,报文的发送和接收设备都必须先进行设定,设定的内容包括源和目的对象的属性,以及数据生产者和消费者的地址,IO數據通常不需要響應,用於控制數據的傳輸 • 显式报文:顯示連接是Request/Response型的通訊,即主站發一筆命令,從站必須回復一筆響應,才算完成一次通訊,适用于两个设备间多用途的点对点报文传递,常用于节点的配置、问题诊断等,

  46. CAN标识符使用 • DeviceNet建立在标准CAN2.0A协议之上,并使用11位标准报文标识符,可分成4个单独的报文组

  47. DeviceNet对象模型 • DeviceNet应用层协议是以面向对象的方式进行描述的,对协议本身所要完成的功能进行抽象和定义,把协议功能划分为多个模块,每个模块抽象出它所具有的产品数据功能属性、所能完成的功能和动作以及与其他模块对象的接口(Interface),并把模块对象化。 • DeviceNet通过抽象的对象模型来描述网络中所有可见的数据和功能,一个DeviceNet设备可以定义成为一个对象的集合 • 一个对象代表设备内一个部件的抽象描述。对象由它的数据或属性、功能或服务以及它所定义的行为决定。

  48. DeviceNet对象模型

  49. DeviceNet与CANopen区别 • 传输距离 • CANopen网络可实现远距离传输(≤10 km),工作速率可调(1 Mb/s≥ 通讯速率≥ 5 kb/s),因此,在实际应用中,要考虑到传输距离的限制而选择总线协议。如果用devicenet进行远距离传输,要使用网络中继器,现在市场上已经有很多这两种总线系统的中继器产品.

  50. DeviceNet与CANopen区别 • 标识符分配 • CANopen支持CAN2.0 A11位和CAN2.0 B29位标识符,而且报文的优先级只能通过它的大小来区分,通常节点地址比较小的COB-ID报文的优先级最高。如果要传送需要快速响应的事件,则要通过预定义和特殊功能对象,如同步(SYNC),时间标记对象(time stamp),紧急事件(emergency),PDO 用来传输实时数据,优先级大于SDO,因为SDO的数据量大,通常用于设备初始化组态。而DeviceNET只用了CAN2.0 A的11位标识符去分组定义报文的优先级,这种信息组设计方法使总线优先级可任意分布,而不仅和节点地址有关。还取决与它是I/O还是显示报文,报文的组号等。

More Related