第6章-通信功能与总线接口附件-CANopen协议简介与应用开发课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第6章-通信功能与总线接口附件-CANopen协议简介与应用开发课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信 功能 总线接口 附件 CANopen 协议 简介 应用 开发 课件
- 资源描述:
-
1、第6章 通信功能与总线接口附件 CANopen协议简介与应用开发协议简介与应用开发 要 点:u CANopen协议简介;u CANopen协议具体应用开发。第6章 通信功能与总线接口附件 CANopen协议是建立在CAN基础上的通信网络技术,是欧洲CiA组织定义的几种CAN高层协议标准之一,因其开放性和低成本等优势,发布后不久就得到了广大厂商和用户的亲睐。在欧洲,在众多基于CAN的工业系统中,CANopen协议是事实上占据领导地位的标准。目前CANopen协议已经在运动控制、车辆工业、电机驱动、工程机械、船舶海运、楼宇自动化等行业得到广泛的应用。一 CANopen协议简协议简介第6章 通信功能
2、与总线接口附件 协议特性协议特性u 基于多种网络通信模式,适合对时间要求苛刻的通讯场合。u 以对象字典的形式来定义标准设备描述文件,并通过SDO(服务数据对象)报文存取。u 包含标准的设备监护服务信息(节点监视/心跳)、网络管理信息以及紧急信息对象。u 支持同步、异步传输模式。u 提供预定义连接集,简化系统配置工作。u 在实际应用中,一般以主从式结构模式为主。第6章 通信功能与总线接口附件 1.1 主节点主要的功能 控制从节点运行状态;通过SDO对对象字典的参数进行读取和修改;监视从节点的运行状况和是否发生错误(即进行节点保护);由从节点中获得相应的信息和运行状态;启动和终止SDO通讯;发送S
3、YNC报文;提供分配特定标识符等网络管理的服务。第6章 通信功能与总线接口附件 1.2 从节点功能负责底层的网络通讯和控制任务,每个从节点只完成属于自己范围内的特定任务。进行实时数据的传输,即PDO(过程数据对象)的通讯。响应主节点发送的管理信息帧。对自己负责的底层设备进行数据采集和控制。第6章 通信功能与总线接口附件 1.3 从节点架构CAN驱动:CAN控制器初始化,报文收发处理。通信对象:收发和解析各种报文对象,实现数据交互过程。对象字典:存储节点所有信息,向通信对象和应用程序提供接口。应用程序:实现节点的功能,如控制、数据采集等,用户自定义。第6章 通信功能与总线接口附件 1 1、CAN
4、 CAN驱动程序驱动程序 CAN控制器初始化程序;CAN中断处理程序;CAN报文发送程序。第6章 通信功能与总线接口附件 2 2、对象字典、对象字典 对象字典就是一个有序的对象组,每个对象采用一个16位的索引值来寻址,为了允许访问数据结构中的单个元素,同时也定义了一个8位的索引值,这个索引值通常被称为子索引。每个CANopen设备都有一个对象字典,对象字典包含了描述这个设备和它的网络行为的所有参数,对象字典通常用电子数据文档(EDS)来记录这些参数。第6章 通信功能与总线接口附件 第6章 通信功能与总线接口附件 通信子协议 SYNC报文参数设置(1005H、1006H、1007H)SDO报文参
5、数设置 客户端SDO(1200H-127FH)服务器SDO(1280H-12FFH)接收PDO报文参数设置 PDO通信参数(1400H-15FFH)PDO映射参数(1600H-17FFH)发送PDO报文参数设置 PDO通信参数(1800H-19FFH)PDO映射参数(1A00H-1BFFH)设备子协议 与特定设备相关的参数,用于存储设备的相关参数。(6000H-9FFFH)第6章 通信功能与总线接口附件 对象的结构Index:指出该对象在对象字典中的位置Object:指明该对象的类型Name:对象的名称Type:指明该对象的数据类型Attrib:对象的属性值M/O:说明该对象是强制实现的还是可
6、选的第6章 通信功能与总线接口附件 从节点对象字典实现 由于从节点需要实现的对象字典项不是很多,也不复杂,所以可以直接采用二维数组的形式来实现。例如:第6章 通信功能与总线接口附件 对象字典实现 将所有对象集合起来,得到对象字典;const indextable ObjDict_objdict=(subindex*)ObjDict_Index1000,sizeof(ObjDict_Index1000)/sizeof(ObjDict_Index10000),0 x1000,(subindex*)ObjDict_Index1001,sizeof(ObjDict_Index1001)/sizeof(
7、ObjDict_Index10010),0 x1001,(subindex*)ObjDict_Index1003,sizeof(ObjDict_Index1003)/sizeof(ObjDict_Index10030),0 x1003,;第6章 通信功能与总线接口附件 扫描函数 根据对象字典的实现方式,相应的扫描函数实现如下:const indextable*ObjDict_scanIndexOD(UNS16 wIndex,UNS32*errorCode,ODCallback_t*callbacks)int i;*callbacks=NULL;switch(wIndex)case 0 x100
8、0:i=0;break;case 0 x1001:i=1;break;case 0 x1003:i=2;*callbacks=ObjDict_Index1003_callbacks;break;case 0 x1005:i=3;*callbacks=ObjDict_Index1005_callbacks;break;case 0 x1008:i=4;break;case 0 x1009:i=5;break;case 0 x100A:i=6;break;case 0 x1010:i=7;break;case 0 x1011:i=8;break;第6章 通信功能与总线接口附件 存取函数 由getO
9、Dentry()和setODentry()函数来实现,思路如下:通过扫描函数定位到指定对象的入口;检查对应对象的访问权限,若越权返回错误码;若权限正确,允许访问,根据调用的函数,将指定内容copy进指定对象,或将指定对象里的内容copy到目标地址(注意检查是否越界);返回。第6章 通信功能与总线接口附件 3、报文对象、报文对象 报文格式 基于CAN总线的报文格式 11位标识符(或29位)+1-8byte数据 标识符格式 Node-ID由系统集成商定义,例如通过设备上的拨码开关设置。Node-ID范围是1127(0不允许被使用)。第6章 通信功能与总线接口附件 CANopen协议定义了四种报文对
10、象,分别是:网络管理报文对象NMT 服务数据对象SDO 过程数据对象PDO 预定义报文或特殊功能对象第6章 通信功能与总线接口附件 1.4 NMT 管理报文(Network Management)主要负责层管理、网络管理和ID分配服务,例如,初始化、配置和网络管理(其中包括节点保护)。网络管理中,同一个网络中只允许有一个主节点、一个或多个从节点,并遵循主从模式。第6章 通信功能与总线接口附件 NMT状态机状态机 从节点内必须实现一个状态机,其状态转换由主节点控制,不同的状态对应不同的报文对象可用性,目的是使主节点可以控制从节点在总线上的通信行为。第6章 通信功能与总线接口附件 Initiali
11、sation:从节点上电后自动进入该状态,主要完成节点的硬件初始化,通信参数和应用参数的重置,成功后自动进入Pre-Operational状态。第6章 通信功能与总线接口附件 Pre-Operational:在此状态中,从节点SDO被允许,主节点通过SDO完成从节点通信参数的设置,如从节点的PDO参数映射设置。主节点发送start_remote_node命令使从节点进入Operational状态。Operational:在此状态中,从节点完成自己的正常工作,采集数据,控制设备,与主节点通信,所有报文对象类型都被允许。Stopped:当从节点发生错误时,或主节点检测到从节点出错了,通过发送sto
12、p_remote_node命令使从节点进入此状态,除了接受NMT报文,其他报文对象都被禁止,以此消除对总线的不良影响。若主节点检测到错误节点恢复正常,仍可通过NMT报文让其正常运行。第6章 通信功能与总线接口附件 只有NMT-Master节点能够传送NMT 状态控制报文(通常都是主节点)。所有从设备必须支持NMT模块控制服务。NMT 状态控制消息不需要应答。NMT消息格式如右图:第一个字节表示从节点收到命令后需要进入的状态,第二个字节是接收命令的从节点第二个字节是接收命令的从节点IDID,若为,若为0 0,此时所有,此时所有节点都接收该命令节点都接收该命令第6章 通信功能与总线接口附件 实现
13、定义一个状态数组 包含所有的报文类型 状态改变函数 原子操作 状态报文可用性设置 状态转换 第6章 通信功能与总线接口附件 实现(续)状态转换最终还需要报文的解析来实现报文可用性的控制。canDispatch()UNS16 cob_id=UNS16_LE(m-cob_id);switch(cob_id 7)检查COB_ID对应的报文对象在目前节点状态下是否可用;若可用,则进入相应的报文处理函数;不可用则跳出;第6章 通信功能与总线接口附件 NMT节点保护 通过节点保护服务,NMT主节点可以检查每个节点的当前状态,当这些节点没有数据传送时这种服务尤其有意义。数据部分包括一个触发位(bit7),触
14、发位必须在每次节点保护应答中交替置“0”或者“1”。触发位在第一次节点保护请求时置为“0”。位0到位6(bits06)表示节点状态,可为下表中的数值。第6章 通信功能与总线接口附件 NMT心跳报文 从节点可被配置为产生周期性的被称作心跳报文的报文。当一个Heartbeat节点启动后它的Bootup报文是其第一个心跳报文。Heartbeat消费者通常是主节点,它为每个Heartbeat节点设定一个超时值,当超时发生时采取相应动作。一个节点不能够同时支持Node Guarding和Heartbeat协议!第6章 通信功能与总线接口附件 1.5 SDO SDO是服务数据对象接口(Service Da
15、ta Object)的缩写,顾名思义提供服务数据的访问接口,所谓服务数据指一些实时性要求不高的数据,一般是指节点配置参数,因此,SDO一般用来配置和获得节点的配置参数,充当OD对外的接口,其优先级只比心跳(Heartbeat)高。第6章 通信功能与总线接口附件 SDO基于CS模式,所有报文都需要确认。通常从节点作为SDO服务器,主节点作为客户端。客户端通过索引和子索引,访问服务器上的任意对象字典,SDO的上传与下载,是从server的角度去理解的,上传:client对server的OD进行读操作;下载:client对server的OD进行写操作。第6章 通信功能与总线接口附件 传送机制:加速传
16、送:最多传送4Byte数据 分段传送:传送数据大于4Byte 报文基本结构:第6章 通信功能与总线接口附件 SDO 命令字包含如下信息:下载/上传(Download/Upload)请求/应答(Request/Response)分段/加速传送(Segmented/Expedited)CAN帧数据字节长度 用于后续每个分段的交替清零和置位的触发位 SDO中实现了5个请求/应答协议:启动域下载,域分段下载,启动域上传,域分段上传和域传送中止。第6章 通信功能与总线接口附件 命令字细节第6章 通信功能与总线接口附件 命令字细节(续)第6章 通信功能与总线接口附件 实现方案SDO线程 借鉴操作系统多线程
17、机制的一套SDO服务处理方法,每个SDO线程表示的是与网络上其他节点建立的一个SDO链接,相当于在两个节点间建立一个SDO通讯路径,其中每个节点都拥有一个对这个路径的描述,在通讯过程中双方通过这个路径来交流,SDO通讯结束则释放该线程,每个节点可以同时与多个节点建立多个这样的路径且互不影响,就如同操作系统的多线程机制一样。第6章 通信功能与总线接口附件 一次SDO访问是这样完成的:SDO发起节点(client)收集足够的信息,建立一个SDO线程,将收集的信息以特定格式放入参数表,形成一帧SDO请求,发送出去;server收到这帧请求,为它建立一个SDO线程,将这帧请求解析以获得足够信息来初始化
18、这个SDO线程对应的参数表;程序按照参数表的描述去执行server的功能收集数据,然后将收集到的数据形成SDO应答帧返回给client;如果此次请求结束则释放该线程,否则等待下一帧请求到来;client在收到应答后判断该请求是否还有后续请求,无则释放此SDO线程;如果在这个过程中,server 和client所在节点有收到其他节点的SDO请求或需要通过SDO请求其它节点,则新建SDO线程来实现,跟上面的步骤一样。第6章 通信功能与总线接口附件 1.6 PDO PDO(Process Data Object)被用来传输实时数据,数据从一个生产者传到一个或多个消费者,采用无确认的方式,数据长度被限
19、制为18字节。PDO通讯没有协议规定。PDO数据内容只由它的映射参数对象定义,假定生产者和消费者知道这个PDO的数据内容。第6章 通信功能与总线接口附件 PDO通讯参数:包含哪个COB-ID将被PDO使用,传输类型,禁止时间和定时器周期。第6章 通信功能与总线接口附件 PDO通讯参数 PDO可以指定禁止时间,避免由于高优先级信息的数据量太大,始终占据总线,而使其它优先级较低的数据无力竞争总线的问题。禁止时间单位100us。PDO可以指定一个事件定时周期,当超过定时时间后,一个PDO传输可以被触发(不需要触发位)。事件定时周期由16位无符号整数定义,单位1ms。第6章 通信功能与总线接口附件 P
20、DO传输模式 异步触发模式 远程索取模式 同步触发模式 同步周期模式 同步非周期模式 PDO的同步传输模式 同步传输(通过接收SYNC对象实现同步),同步传输又可分为非周期和周期传输。非周期传输是由远程帧预触发或者由设备子协议中规定的对象特定事件预触发传送。周期传输则是通过接收同步对象(SYNC)来实现。第6章 通信功能与总线接口附件 每个SYNC后,有一段同步时间窗口,同步PDO在窗口内发送。可设置同步PDO的发送速率,如传输类型为0,表示PDO仅在有事件发生SYNC前,在时间窗口内发送。若为N(1-240),传送在每N个SYNC消息后触发。第6章 通信功能与总线接口附件 PDO的异步传输模
21、式 其触发方式可有两种,第一种是通过发送与PDO的COB-ID相同的远程帧来触发PDO的发送(传输类型为253),第二种是由设备子协议中规定的对象特定事件来触发(例如,定时传输,数据变化传输等,传输类型为255)。第6章 通信功能与总线接口附件 PDO映射参数:包含一个对象字典中对象的列表,这些对象映射到PDO里,包括它们的数据长度。生产者和消费者必须知道这个映射,以解释PDO内容。第6章 通信功能与总线接口附件 举个例子,一个PDO的映射参数对象(1A01):则这个PDO报文的内容是:改变1A01里面的内容,就可以改变该PDO报文的数据内容。第6章 通信功能与总线接口附件 实现sendPDO
展开阅读全文