版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. . . . CAN总线的浅析CANopen协议摘 要: 本文分析了CAN总线的一些特点以与在国的的应用状况,提出了引入国际上通用的CAN总线高层应用协议,以提高国CAN系统应用水平的建议,并简要介绍了一种CAN的高层协议CANopen协议。文章最后部分介绍了国际上一些较先进的CAN产品和开发方法。 关键词: CAN-bus协议;CANopen协议;嵌入式软件中间件 在设计嵌入式系统,尤其是分布式嵌入式系统时,解决好系统各单元间可靠、有效的通信是系统设计成败的关键,对实时性和安全可靠性要求高的网络而言就更是如此。解决这一问题有多种方案,如RS232/485串行总线、CAN、Pro
2、fitBus、FF、WorldFIP、LonWorks等各类型的现场总线,还有嵌入式以太网等。其中,尽管RS485串行总线协议的性能不高,但由于其在硬件成本以与开发简便性上的巨大优势,目前仍然是国广泛的总线应用。 随着嵌入式系统应用的发展,RS485性能上的不足逐渐显露出来,已经不能满足设计一个高性能、高实时性系统的要求。尽管还需要实践的证明,但笔者经过多年的观察和实践,感觉到CAN总线是其中最有希望成功的。 选择CAN总线实现 通信的原因 选择CAN总线作为最佳候选者,主要是基于以下几方面原因: CAN串行总线具有高性能 CAN的传输距离可以达到10公里;通信速率最高可达1Mbps;具有完善
3、的错误检测机制;采用“多重访问冲突仲裁”机制的帧传输方式,可保证不丢失信息;每一帧中最多可以传输8个字节数据,可提供很高的实时性等等。性能上的优势保证了CAN可以应用在很多的领域,在汽车工业、船舶运输、机械控制、工厂自动化、楼宇自动化等都可以看到CAN的应用。 CAN在硬件成本上很具优势 除了性能外,和其它现场总线相比,CAN总线在硬件成本上也有很大优势。从硬件芯片上来说,智能节点要收发信息需要一个CAN控制器和一个CAN收发器。经过20多年的发展,CAN已经获得了国际上各大半导体制造商的大力支持,据CAN最主要的推广组织CIA(自动化CAN)统计,目前已经有20余种CAN控制器和收发器可供选
4、择,片集成CAN控制器的单片机更多达100余种。CAN在开发成本上的优势也很明显 目前,从广泛应用的8位/16位单片机,到DSP和32位的PowerPC、ARM等嵌入式处理器,均在芯片部含有CAN总线硬件接口单元。因此,从硬件角度看,CAN具备其它现场总线无法比拟的高集成化优势和广泛的市场支持基础。 CAN的开发平台也比较简单,用户如果选择普通单片机加上CAN控制器进行开发,则CAN的开发平台和普通单片机的开发平台完全一样;如果选择带有片CAN控制器的单片机进行开发,则只要换用支持该单片机的仿真器就可以了,其他开发设备完全一样。开发CAN也需要相应的驱动程序。用户可以自行根据选择的CAN控制器
5、开发驱动程序。 图1 CANopen协议通信模型图2 CANopen设备模型通过采用高层协议将CAN的应用推向深化 和其他的现场总线相比,CAN只定义了物理层和数据链路层的规(遵循OSI标准),这种设计和CAN规定义时的历史条件有关,也可以使CAN能够更广泛地适应不同的应用条件,但必然给用户应用带来一些不便。用户在应用CAN协议时,必须自行定义高层协议。 如何将CAN协议的应用推向更深的层次,同时满足产品的兼容和互操作性?国际上通行的办法是发展基于CAN的高层应用协议,只用在应用层上,不同公司的产品才可能实现互操作,好的应用层协议更可以为用户带来系统性能的飞跃。 在CAN总线协议飞
6、速发展的20年中,很多领域都制定了CAN在该领域应用时所采用的高层协议规。其中,比较著名的有美国汽车工程师协会(SAE)制定的车通信规J1939等。这些协议和规对CAN的推广起了很大的作用,但总体来说,协议的模块化特性都不太好,一般只能应用于特定的领域。为了能够把CAN推广到更多的领域,欧洲一些公司推出了CAL(应用层CAN)协议,尽管CAL在理论上正确,并在工业上可以投入应用,但每个用户都必须设计一个新的子协议,因为CAL 是一个真正的应用层协议。CAL 可以被看作一个应用CAN 方案的必要理论步骤,但在这一领域它不会被推广。从1993 年起,由Bosch公司领导的一个欧洲机构研究出一个协议
7、原型,由此发展成为CANopen规。 CANopen是一个基于CAL的子协议,采用面向对象的思想设计,具有很好的模块化特性和很高的适应性,通过扩展可以适用于大量的应用领域。在CANopen规基本完成之后,Bosch将其移交给CIA组织,由其进行维护与发展。在1995年,CIA发表了完整版的CANopen通信子协议;仅仅用了5年的时间,它已成为全欧洲最重要的嵌入式网络标准。 CANopen 不仅定义了应用层和通信子协议,而且为可编程系统、不同器件、接口、应用子协议定义了大量的行规,遵循这些行规开发出的CANopen设备将能够实现不同公司产品间的互操作。另外,CANopen协议是免许可证的,任何组
8、织和个人都可以开发支持CANopen协议的设备而不用支付版税,这也是CANopen得到迅猛发展的重要原因之一。CANopen目前已在汽车工业控制系统,公共交通运输系统,医疗设备,海运电子设备和建筑自动化系统中取得了广泛的应用,是将CAN应用推向深化的理想选择。 采用CANopen协议 实现通信 CANopen协议中包含了标准的应用层规和通信规,其通信模型如图1所示。在CANopen的应用层,设备间通过相互交换通信对象进行通信。良好的分层和面向对象的设计思想将带给用户一个清晰的通信模型。 CANopen设备模型 一个CANopen设备模块可以被分为3部分,如图2所示。 通信接口和协议软件提供在总
9、线上收发通信对象的服务。不同CANopen设备间的通信都是通过交换通信对象完成的。这一部分直接面向CAN控制器进行操作。 对象字典描述了设备使用的所有的数据类型,通信对象和应用对象。是一个CANopen设备的核心部分。对象字典位于通信程序和应用程序之间,向应用程序提供接口,应用程序对对象字典进行操作就可以实现CANopen通信。理解对象字典的概念是理解CANopen模型的关键。应用程序由用户编写,包括功能部分和通信部分。通信部分通过对对象字典进行操作实现CANopen通信,而功能部分由用户根据应用要现。 CANopen网络的通信和管理都是通过不同的通信对象来完成的,为了能够实现通信,网络管理,
10、紧急情况处理等功能,CANopen规定义了四类标准的通信对象: ·进程数据对象(PDO) 第一类通信对象为进程数据对象。PDO被映射到单一的CAN帧中,使用所有的8个字节的数据域来传输应用对象。每个PDO有一个独立的标识符并且可能只被一个节点发送,但它可以被多于一个节点接收,这种模式被称之为生产者/消费者通信模式。PDO可以通过多种模式传送,部事件,外部时钟,远程帧请求以与从特定节点接收到同步报文都可以启动PDO发送。 ·服务数据对象(SDO) 第二类通信对象为服务数据对象,该对象可以传输大于8个字节的配置信息。也就是说,SDO传送协议允许传送任意长度的对象。接收者将确认收
11、到的每个段信息,发送和接收者间将建立点对点的通信,称之为客户机/服务器模式。未来,CANopen将允许快速传输SDO,不必对传送的每个段都进行确认,只要在整个对象传送完毕后进行确认即可。 ·网络管理对象(NMT) 第三类通信对象是网络管理对象,包括节点警戒对象以与NMT对象。节点警戒对象是由NMT主节点远程请求发送的带有1字节数据的CAN帧,一个字节的数据中包含1个触发位以与7个用于表示节点状态的数据位。NMT主节点将周期性地发送节点警戒对象。发送周期(警戒时间)的长度在对象字典中规定并且可以通过SDO进行配置。另外,系统还定义了生命警戒时间,NMT主节点要在生命警戒时间过后向NMT
12、从节点发送远程请求。这种机制保证了即使NMT主节点不在了,系统中的其他节点也可以通过用户定义的方式进行回应。 ·特殊功能对象 CANopen还为同步,紧急状态表示以与时间标记传送定义了三个特定的对象。同步对象由同步制造者向网络进行周期性广播,该对象将提供基本的网络时钟。当设备发生严重的部错误时,相关的一个紧急状态客户机将发送一个紧急状态对象。时间标记对象将为应用设备提供公共的时间帧参考。 要理解CANopen规,核心是要理解CANopen的设备模型和各类型的通信对象。掌握了这两者后,通过利用各类标准的设备描述就可以开发出符合国际标准的CANopen设备了。 展望 最近一段时期,国开发
13、、应用CAN系统的人员正在逐渐增多,对CAN协议的研究也在不断加深。在很多领域,如研制电动汽车和混合动力汽车的863重大课题,已经将CAN作为标准的车通信协议确定下来。电力,航天等部门也在CAN方面取得了不小的应用成绩。 在CAN应用蓬勃发展的时候,我们也应当清醒地看到,尽管CAN协议在欧美已经发展了20年,应用层协议的发展也差不多有10年时间,但目前国大多数的应用系统仍然基于CAN2.0B规开发,还不能在应用层的水平上进一步深入,这不能不说是很遗憾的事情。另外,国研究、开发CAN协议,尤其是CAN高层协议的组织和人员还太少,这对CAN在中国的推广是十分不利的,笔者诚切希望更多的有识之士能够加
14、入这一行列。最近在学习CANopen协议,遇到一些小知识点,查阅后作为补充,记录在此,方便以后查询,算是读书笔记吧。一、CANopen协议中SYNC功能和使用 SYNC是CANopen管理各节点同步数据收发的一种方法,相当于网络节拍,基于同步的PDO按照这个网络节拍来执行实时数据的收发。SYNC属于生产/消费型通讯方式,网络中有且只有一个SYNC生产者,一般有多个消费者,其网络标识符优先级很高,一般设置为0x80,基本上除了NMT优先级最高。SYNC生产者按照固定频率发送SYNC报文,需要SYNC的节点(消费者)将其接收并计数,当计数值达到节点相应TPDO要求时,该TPDO映射的数据被发送(根
15、据PDO传输类型也可能是映射数据更新),此过程中SYNC生产者提供网络节拍,各消费者以节拍周期的倍数执行数据传输功能。在CANopen网络中应用SYNC要注意以下几点:1. SYNC并不是主节点必须的功能,不一定要和NMT放在同一节点上,实际网络应用中可以在网络中找一个任务较少、实时性好的节点来作为SYNC生产者,SYNC消费者可以有多个,但是生产者同时只能有一个存在。2. SYNC是不带数据的,以使报文尽可能短,目的是为了加快其传输,减少网络占用。3. SYNC发出后,需要发送数据的PDO要在规定时间段发送数据,这个时间段叫做时间窗口(对象1006H指定),要小于SYNC节拍周期,以便每个周
16、期留一定时间来进行其他类型的网络通讯二、CANopen协议PDO的几种传输方式由于PDO所传输的数据容是无协议的且分配的标识符围较SDO靠前,因此,其效率和优先级都是较高的,通常用于实时过程数据的传输.PDO是生产/消费类型的通讯方式,数据只有一个生产者(发送),但是消费者(接收)可以有多个,生产者和消费者事先都已知道数据的类型和容(通过设置PDO映射来管理).对PDO通讯参数的设置可以实现四种通讯方式:1. 同步传输.在收到SYNC消息后触发PDO发送,可以定义收到几个SYNC后触发一次TPDO,在有SYNC的CANopen网络中,SYNC就相当于一个网络节拍,数据根据节拍来进行固定周期的过
17、程数据传输.比如网络中有一个压力传感器,一个温度传感器,一个物位传感器,网络中有一个HMI监控终端来实时监控三个传感器采集的数据,压力传感器可能检测的是一个快速的压力变化,那可以每隔200mS更新一次数据,温度可能需要1S更新一次数据,物位可能5S更新一次数据,(假设各传感器的数据采集周期都比数据更新周期小,如果大的话数据更新快可能没有意义,呵呵)现在我可以设置一个200mS周期的SYNC消息,压力传感器每收到一个SYNC就向HMI传输一次数据,温度传感器可以每隔5个SYNC传输一次数据,同样物位传感器就是每收到25个SYNC发送一次数据.这种通讯方式显得比较规矩,好管理,系统运行效率高,适合
18、周期性数据更新的应用.2. 远程请求.在需要网络上某个节点的数据的时候,我发一个远程数据请求过去,对方在接收到请求后,把我要的数据给发过来,这种方式是在我需要的时候去主动获取.3. 定时发送.这个有别于SYNC,它是在本节点实现周期发送,通过设置PDO参数,定一个周期,每隔固定的时间向网络上发送一次PDO,它与SYNC无关,在网络设计中主要按照传感器的数据采集速度和数据更新要求来设定定时周期.4. 事件触发.当节点的某个时间发生触发的一次数据发送,例如当某个接着报警开关的开关量采集节点的报警状态发生变化时,触发一次PDO将报警状态发送到网络上,使系统能够与时获得该报警状态信息.该方式是实时性最
19、好的一种传输方式,特别适合系统运行出错报警和重大事件的与时处理上.上面的几种传输方式各有所长,在CANopen网络的设计中,按照不同的应用灵活配合使用才能构建一个优秀的解决方案.三、SDO服务SDO是服务数据对象接口(Service Data Obiect)的缩写,顾名思义提供服务数据的访问接口,服务数据就是一些实时性要求不高的数据,一般是指节点配置参数,因此,SDO一般用来配置和获得节点的配置参数。其优先级只比心跳(Heartbeat)高。SDO既然称之为服务,那就要有服务的提供者和使用者,提供者就是SDO server,使用者就是SDO client,在CANopen网络中每个节点都要有一
20、个SDO server,因为每个节点的对象字典大部分对象都是通过SDO来访问的,对象字典的被访问,提供所请求的服务当然要有个SDO server。SDO请求和应答报文都是8个字节的数据,其中包括对象字典的索引、子索引、SDO命令和数据。这里要注意和我们熟知的以太网FTP不同,SDO的上传和下载正好与之相反,FTP是从client的角度出发去理解上传和下载,SDO是以server的角度去理解的,从服务器上获得数据即对对象字典进行读操作叫做上传,往服务器上写数据即对对象字典进行写操作叫做下载。 四、怎样实现SDO服务 SDO是CANopen协议中最复杂的一部分,带有应答机制,有多种传输方式,并且完
21、整的SDO功能节点需提供1个SDO server和多个SDO client,因此SDO的实现异常困难,协议多种传输方式的解析处理还有迹可循,多个SDO client服务和多个对SDO server的访问的协调就不容易了,这里介绍一种方法SDO线程来解决。注意,这里的线程可不是操作系统提供的多线程技术,况且为保证协议栈良好的移植性,在CANopen协议栈核心代码里中也不好去调与操作系统相关的库函数。我们这里的SDO线程只是借鉴了操作系统多线程机制的一套SDO服务处理方法,每个SDO线程表示的是与网络上其他节点建立的一个SDO,相当于在两个节点间建立一个SDO通讯路径,其中每个节点都拥有一个对这个
22、路径的描述,在该节点看来好像建立了一个线程来负责这个路径(但决不会真的创建一个系统线程),在通讯过程中双方通过这个路径来交流,SDO通讯结束则释放该线程,每个节点可以同时与多个节点建立多个这样的路径和互不影响,就如同操作系统的线程机制一样的效果。我们知道每建立一个线程都会生成一个描述线程属性的参数表和一些私有数据,类似的,SDO线程的建立也会初始化一个对应的参数和数据结构体SDO线程参数表,以之来描述这个SDO的属性并提供私有通讯数据的存储。SDO线程参数表可以说是SDO线程的核心,所有SDO线程的建立、删除和SDO通讯都要涉与到这个参数表。参数表容包括能够描述一个SDO访问过程的所有参数,这
23、里不详述。一次SDO访问是这样完成的。首先SDO发起节点(SDO client)收集足够的信息,建立一个SDO线程,说白了就是初始化SDO线程参数表,将收集的信息以特定格式放入参数表,形成一帧SDO请求,发送出去。SDO服务节点(SDO server)收到这帧请求,为它建立一个SDO线程,将这帧请求分析分解以获得足够信息来初始化这个SDO线程对应的参数表,然后程序就会按照参数表的描述去执行server的功能收集数据来满足这个SDO请求,然后将收集到的数据形成SDO应答帧返回给SDO client,如果此次请求结束则释放该线程,否则等待下一帧请求到来;SDO client在收到应答后判断该请否还
24、有后续请求,无则释放此SDO线程。如果在这个过程中,SDO server 和SDO client所在节点有收到其他节点的SDO请求或需要通过SDO请求其它节点,则新建SDO线程来实现,跟上面的步骤一样,这样就可以实现多个SDO server和SDO client服务都得到实现而互不干扰,相当于双向多线铁路,可比单线爽多了。该方法已在单片机下实现,效果还不错。本文来自CSDN博客,请标明出处:CanOpen开发中的常见问题参考:.picavrbbs./news/2009-10/1439.htmSDO是CANopen协议中最复杂的一部分,带有应答机制,有多种传输方式,并且完整的SDO功能节点需提供
25、1个SDO server和多个SDO client,因此SDO的实现异常困难,协议多种传输方式的解析处理还有迹可循,多个SDO client服务和多个对SDO server的访问的协调就不容易了,这里介绍一种方法SDO线程来解决。注意,这里的线程可不是操作系统提供的多线程技术,况且为保证协议栈良好的移植性,在CANopen协议栈核心代码里中也不好去调与操作系统相关的库函数。我们这里的SDO线程只是借鉴了操作系统多线程机制的一套SDO服务处理方法,每个SDO线程表示的是与网络上其他节点建立的一个SDO,相当于在两个节点间建立一个SDO通讯路径,其中每个节点都拥有一个对这个路径的描述,在该节点看来
26、好像建立了一个线程来负责这个路径(但决不会真的创建一个系统线程),在通讯过程中双方通过这个路径来交流,SDO通讯结束则释放该线程,每个节点可以同时与多个节点建立多个这样的路径和互不影响,就如同操作系统的线程机制一样的效果。我们知道每建立一个线程都会生成一个描述线程属性的参数表和一些私有数据,类似的,SDO线程的建立也会初始化一个对应的参数和数据结构体SDO线程参数表,以之来描述这个SDO的属性并提供私有通讯数据的存储。SDO线程参数表可以说是SDO线程的核心,所有SDO线程的建立、删除和SDO通讯都要涉与到这个参数表。参数表容包括能够描述一个SDO访问过程的所有参数,这里不详述。一次SDO访问
27、是这样完成的。首先SDO发起节点(SDO client)收集足够的信息,建立一个SDO线程,说白了就是初始化SDO线程参数表,将收集的信息以特定格式放入参数表,形成一帧SDO请求,发送出去。SDO服务节点(SDO server)收到这帧请求,为它建立一个SDO线程,将这帧请求分析分解以获得足够信息来初始化这个SDO线程对应的参数表,然后程序就会按照参数表的描述去执行server的功能收集数据来满足这个SDO请求,然后将收集到的数据形成SDO应答帧返回给SDO client,如果此次请求结束则释放该线程,否则等待下一帧请求到来;SDO client在收到应答后判断该请否还有后续请求,无则释放此S
28、DO线程。如果在这个过程中,SDO server 和SDO client所在节点有收到其他节点的SDO请求或需要通过SDO请求其它节点,则新建SDO线程来实现,跟上面的步骤一样,这样就可以实现多个SDO server和SDO client服务都得到实现而互不干扰,相当于双向多线铁路,可比单线爽多了。怎样利用好单片机上的存储器资源来实现OD的存储与访问我们知道OD(对象字典)是CANopen的核心,所有功能都是围绕它开展的,是协议栈的数据中心,良好的OD实现是协议栈高效稳定运行的基础,而OD的实现最基本的一点就是怎么去保存它。因为OD的容比较杂,读写属性上,有只读数据、只写数据、可读写数据;保存
29、要求上有非易失和掉电丢失两种类型;数据类型上有字符型、整型、长整型等等;存储格式上有8位、16位、32位等。其它的不管,本文现只讨论怎么利用单片机的资源去尽量满足OD的存储需求。有人会以为这还要讨论么?只读的就放在只读存储器中,可写的就放在RAM中,需要掉电保存的就放在非易失可读写存储器中。话是这么说,但实际上问题很多,罗列如下:1 对协议栈只读并不表示对应用程序只读。2 可读写而又掉电保存的数据不能放在RAM里。3 频繁读写的数据不能放在非易失存储器中,因为非易失存储器往往速度慢,有写次数限制。4 单片机资源有限,存取方式和读写速度有限值,因此得合理利用。既然有这些问题,我们先对OD的数据进
30、行分析分类:1 系统只读参数。自节点出厂就无需更改,例如,节点硬件序列号、软硬件版本等。2 过程数据对象。频繁读写,掉电无需保存。例如,采集的模拟量、待输出的开关量。3 系统配置参数。可读写,偶尔配置,大部分时间只读。基本上所有的OD对象都可以归到这三类中去。下面再以AVR单片机为例说说单片机的几类存储资源以与其特点: 类型 运行中读写属性 访问速度 容量 特点FLASH 程序存储器 只读 一般 较大 操作方便但只能放程序和初始化只读数据,掉电不丢失SRAM 数据存储器 读写 最快 小 操作方便,速度快,掉电数据丢失EEPROM 数据存储器 读写 读一般,写很慢 小 操作复杂,写速度极慢看到上
31、面这个表,你会马上把OD的三类数据存放位置定下来吧,系统只读参数放在FLASH中;过程数据对象放在SRAM中;系统配置参数放在EEPROM中。实际上确实该如此安排,但是所有问题的解决了?NO,NO,NO!OD中的数据对象是怎么安排进存储器的?系统启动怎么初始化?怎么去访问?下面提供一种方案:出厂设置随程序一起写入FLASH,然后系统重器开始运行,在软件初始化过程中,程序将出厂默认的整个OD对象从FLASH 载入到RAM中去,不论是OD的那种分类的数据;之后如果判断是第一次运行,将用RAM中属于的统配置参数的那一类数据去初始化EEPROM,否则用EEPROM中的系统配置参数去重新覆盖对应的RAM
32、映像。好了初始化完成,开始运行,因为所有OD数据都load到RAM中,因此OD对外可以提供统一快速的数据服务接口,外部的读操作就是直接读RAM,写则是先写RAM映像,然后再判断如果是OD的系统配置参数那一类则同时更新EEPROM。最后要注意一点就是OD的对象属性等信息一定要放在FLASH中,否则将是一个极大的RAM开销。上面方案优点是在满足OD需求的前提下能够提供统一快速的OD访问接口;能够与时存储非易失性数据;并能在软件上实现恢复出厂设置的操作而不增加额外的出厂设置备份空间(在EEPROM中置一标志就行了,自己去想)。明显的优点也意味着明显的缺点,就是占用较多RAM空间,只读数据和非易失性数
33、据都要映射到RAM中,浪费了一部分RAM,这将使得本来就紧的RAM资源更加紧,好在一般节点上的OD容一般不多,而且现在RAM非常便宜。上面的方案同样适用于其他单片机,基本上现在的单片机上都有FLASH和RAM,而即使有的单片机没有EEPROM,但是本身FLASH区是可以运行中在线写入的,也可以当EEPROM用(但此时最好就不要来一个写一个了,因为FLASH是页擦除的,比较耗时间,因此建议做成批量写入方式,OD的0x1010和0x1011对象有涉与),实在不行还可以外扩。对象字典0x1005和0x1006的理解SYNC不一定由主站产生,因此,产生SYNC的节点,0x1005对象的值一般是0x40
34、000080,第30位为1表示本节点产生SYNC,而本节点的0x1006对象就是产生同步周期值了;而接收SYNC的节点0x1005对象值一般是0x80,第30位是0表示本身不产生SYNC,而接收COB-ID为0x80的报文作为同步帧,该节点0x1006一般置0,没什么用处了. 在CANopen网络过LSS服务设置节点地址和网络波特率CANopen专有个子协议用来描述怎样去通过网络设置节点地址和波特率,就是CiA DSP-305,大伙都叫LSS协议,是Layer Setting Services的缩写,不太好翻译,也许可以翻译成底层设置服务协议吧。属于主从式服务,类似于NMT的方式,占用2021
35、(for master)和2020(for slave)两个标识符。CANopen网络中同时只能有一个节点能提供LSS Master服务,并且该节点同时也必须是NMT Master。网络上的其他节点都提供LSS Slave服务。假设网络上除了主节点之外,其他节点都是无地址的,那么它根据什么去设置各节点地址呢?答案是LSS地址,这跟节点的地址可不同,它理论上是全球唯一的,那么这个地址到底是什么呢?答案是对象字典1018H的容,包括vendor-id(制造商ID)、product-code(产品码)、revision-number(修订码)和serial-number(序列号),这几个加起来就全球
36、唯一了吧。一般要求LSS Master节点要预先知道网络上的各节点的LSS地址。设置某个节点地址的步骤如下:1. 通过LSS地址去将希望设置ID的节点切换到配置状态(相当于NMT的停止状态),当然是通过LSS服务(Switch Mode Selective)。2. 然后通过Configure Node-ID服务设置其节点地址。3. 置该节点到可操作状态。不是很困难吧。设置网络波特率要复杂一些,步骤如下:1. 将网络上所有LSS Slave切换到配置状态,通过switch Mode Global服务实现。2. 通过Configure Bit Timing Parameters服务将波特率广播到每
37、个节点中。3. 通过Activate Bit Timing Parameters服务激活新设置。将整个网络波特率切换为新设置。4. 置网络切换回可操作状态。这里要注意:在Activate Bit Timing Parameters服务中有个switch_delay参数,该参数指定相等长度的两个延迟周期长度,是为了避免总线上出现不同的位定时参数(波特率)。每个节点在收到命令后switch_delay毫秒后应用新的位定时参数。在应用新参数后,节点在第二个switch_delay毫秒定时到之前不发送任何报文。各节点处理位定时激活命令需要的时间可能不同,而且激活命令之前的的报文可能还在节点的接收队列中
38、。意思就是某个节点在处理延时的过程中可能还会以旧的波特率来传输CAN报文。因此swith_delay要比网络上任何一个节点的处理时间都要长,这样才能避免一个节点已经改变了波特率,而另一个节点还在以旧的波特率工作。在第一次经过switch_delay指定的时间长度后,每个节点必须在第二个switch_delay期间完成到新波特率的切换。因而在经过了第二个switch_delay后,所有的节点都必须保证以新的波特率监听网络。至于LSS提供的LSS地址查询等功能这里就不介绍了。CANopen协议中的SDO服务SDO是服务数据对象接口(Service Data Obiect)的缩写,顾名思义提供服务数
39、据的访问接口,服务数据就是一些实时性要求不高的数据,一般是指节点配置参数,因此,SDO一般用来配置和获得节点的配置参数。其优先级只比心跳(Heartbeat)高。SDO既然称之为服务,那就要有服务的提供者和使用者,提供者就是SDO server,使用者就是SDO client,在CANopen网络中每个节点都要有一个SDO server,因为每个节点的对象字典大部分对象都是通过SDO来访问的,对象字典的被访问,提供所请求的服务当然要有个SDO server。SDO请求和应答报文都是8个字节的数据,其中包括对象字典的索引、子索引、SDO命令和数据。这里要注意和我们熟知的以太网FTP不同,SDO的
40、上传和下载正好与之相反,FTP是从client的角度出发去理解上传和下载,SDO是以server的角度去理解的,从服务器上获得数据即对对象字典进行读操作叫做上传,往服务器上写数据即对对象字典进行写操作叫做下载。CANopen协议中SYNC功能和使用SYNC是CANopen管理各节点同步数据收发的一种方法,相当于网络节拍,基于同步的PDO按照这个网络节拍来执行实时数据的收发。SYNC属于生产/消费型通讯方式,网络中有且只有一个SYNC生产者,一般有多个消费者,其网络标识符优先级很高,一般设置为0x80,基本上除了NMT优先级最高。SYNC生产者按照固定频率发送SYNC报文,需要SYNC的节点(消费者)将其接收并计数,当计数值达到节点相应TPDO要求时,该TPDO映射的数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国开大学劳动合同法形考
- 合同法36条对应民法典 区别
- 2024《集体合同示范文本》
- 2024新版个人对个人抵押合同范本
- 紧急事件安全防控
- 2024专卖店劳动合同范本
- 物业工程部技能培训课件
- 2024劳务分包合同范本建筑分包合同范本
- 2024所有户外广告合同标准版
- 2024《水电安装合同》
- 个人开车与单位免责协议书
- 2024新人教版道法一年级上册第三单元:养成良好习惯大单元整体课时教学设计
- 医疗器械质量安全风险会商管理制度
- 马渭丽《月光下的中国》
- 护理职业生涯规划书成长赛道
- 肺结节科普宣教培训
- 维克多高中英语3500词汇
- 融资融券业务前景和业务开展方法(文字稿)
- 条据书信 车辆处理违章委托书.doc
- 《工程项目融资》PPT课件.ppt
- 《微积分》各章习题及详细答案.doc
评论
0/150
提交评论