CANopen协议介绍_第1页
CANopen协议介绍_第2页
CANopen协议介绍_第3页
CANopen协议介绍_第4页
CANopen协议介绍_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、CANopen协议介绍(讲义)2010-10-12 15:58:28| 分类: 技术文档 | 标签:|举报|字号大中小 订阅很长一段时间以来,很多人问我CANopen总线优势到底在什么地方,我也大体的给了 口头的讲述,但是比较笼统,没办法做到详 细解释,加上纯技术的话语比较晦涩,遇上 内行还能多聊几句,如果是刚接触的,那就 是云里雾里了。这次正好要进行公司业务员 培训,要讲讲 CANopen ,在整理过程中把 我的讲义贴出来,希望能帮到大家,以下内 容是我讲课的口述内容,比较白话,不能作 为资料,大家见谅,鉴于我整理也比较辛苦, 也算个小小的知识产权,所以PPT我就不贴出来了。'A讲义

2、内容:通常CANopen协议相关的一些资料相对 来说比较晦涩,非专业人士看起来比较困 难。我尽量以浅显易懂的方式将CANopen协议的框架和它在实际应用中存在的优缺点展示给大家。我按照最先接触的内容由浅入深的讲解,直接讲 CANopen 协议会有点跳跃的感觉,所以,我以产品作为切入点,分析一下如何使用,在这个过程中,让大家理解什么是CANopen 协议。首先,我们拿到一个产品,比方说是编码器, 它的用途是作为位置传感器, 那我们就需要将编码器送出的数据进行采集。一般自然界中存在的信号有多种形式,大多以模拟量形式存在,类似于人感觉到温度的高低、水流的快慢、风力的大小等等。但这是很模糊的概念,今天

3、热了还是冷了,风大风小,没有比较是很难界定的,为了规范这些量,方便描述时的统一性,温度计量标准有华氏和摄氏、 水流有每秒多少立方、风力有级数。这些,就是数字量。数字量在人与人之间传递时,可以通过嘴和耳,语言和听力, 在设备之间如何来传递呢?学过数电的人知道, 灯泡有两种状态, 亮和暗,在最基础的电路回路里, “通 ”和 “断”是两个最基本的状态,我们可以把他理解为“ 1和”“ 0,”这样,就有了表述的方法。但是单独使用这两种状态是无法传递信息的, 如何把编码器的数据传递出去,就需要使用到协议,下面我就讲讲协议。我们知道,人与人交流需要用到语言,我们要表达出一个完整的意思就要使用一句话,一句话内

4、会包含很多的字,每个字又由笔画构成。这样,我们协议的基本框架就出来了,在整个CANopen 协议传递过程中,最大的单位称为 “帧”,类似于一句话, “帧” 由 “字节 ”组成,就代表了字,每个 “字节 ”由 “位 ”组成,我们称为笔画。那地球上还有英语、法语、德语、还有听不懂的鸟语呢!那就是各个通讯协议,比如 Profibus-DP 、DeviceNet 、 CC-Link 、 Hart 、 Modbus 等。让 DP 和 CANopen 通讯,那就是相当于一个讲德语的与讲中文的对话,鸡同鸭讲,能沟通吗?需要翻译,对吧。回过头来我们讲讲 CANopen 的帧格式, CANopen 一帧数据由一

5、个 COB-ID (报文头)和最大8 字节数据组成,其中 COB-ID 可以是 11 位( CAN2.0 ) , 也可以是 29 位( CAN2.0B ) ,当然, CAN2.0B 需要向下兼容11 位 CAN报文。对于每字节数据由哪些位组成,这里就不再赘述,因为这部分内容不在 OSI模型 的第七层应用层内描述,开发人员也不必过 多考虑这块内容。由于 CANopen协议内对 COB-ID的各个地址段报文有详细规范,这 里就花点时间讲一下,当然也没时间全部讨论,只选一些重要内容来说。以前我们培训一直在说 CANopen协议 好,速度快,广播报文,这些关键字听的多 了,但是大家可能不是很理解这些内

6、容。现 在就来解释一下。在编码器应用中,CAN报 文我们常用的有 SDO (Service Data Object服务数据对象)和 PDO (Process Data Object过程数据对象),从字面描述意义看, 通常数据的发送读取是采用 PDO来实现 的,CAN参数的修改是通过 SDO来实现的 (当然这不是绝对的, 具体的如果有兴趣可 以会后询问)。先来说说 PDO ,我们在很多资料上会看到这样一张表COB-ID通讯参数在081-0PDO1(发181HH1201FHH2OD1024H 索弓 1805HPDO128FH-2PDO2(彩PDO2(接PDO3n304HH3381HH3FFH140

7、0H1801H4404H1802HPDO3PDO4(鼠PDO4(接SDO叫孕SDO401H-4 481HH4501HH5581HH51402H1803H403H 200H101600017注燃MPDOOSDO"爱送/接收则由(slave)CAN节点方观察的表一:CANopen主/从连接集对象假设我们读取到一组编码器数据是这样的0x181 0x30 0x1F 0x00 0x00,我们应该如何理解呢?首先,“0双是一个符号, 它代表了紧跟着的数据是十六进制的(等同于在数据后面直接标 “ H'上述表达式也可 以表述为 « 181H 30H 1FH 00H 00H 

8、7; ),“ 18俄们查看上表后发现,它包含在PDO1 (发送)里面,它代表了是由编码器发出的过程数据对象,表上显示是“181H1FFH,这是因为COB-ID包含了节点号信息,地址 1对应着181H ,地址2对应了 182H ,以此 类推,最大127个节点。“0x30 0x1F 0x00 0x00”就代表了数据内容,在 CAN协议内, 帧数据是低位在前,高位在后的。所以上述 数据直接读取后得出编码器送出1F30H ,这就代表了编码器的当前位置值。 那在总线上面,多个节点同时发送数据不会产生冲突么?以前我们说过, CAN 协议具有仲裁, 这里简单介绍一下仲裁是如何实现的。 上面说了, COB-I

9、D 包含了节点号信息, 也就是说,只要总线上的设备节点号不同, 所送出的广播报文的 COB-ID 肯定是不同的,如果一个是 182H , 一个是 183H , 仲裁时怎么做?本文最开始的时候介绍了每个字由笔画组成,现在就要用到位(bit)的概念了, 182H换算成二进制是0001 1000 0010( B ),“ B”代表了二进制, 183H 换算成二进制是00011000 0011( B ),关于显性位、隐形位这里不再赘述,这个有兴趣可以找我要资料看,这里我就简单描述为“ 0比” “ 1的优先级”高,可以理解为拖后腿,“0为低电平,”“1”为高电平,在线上低电平会把高电平拉低,一旦 183H

10、 发现数据传输过程中与自身数据不符合,就终止上传,保证了 182H 的数据先上总线。我们在实践中会发现, 编码器的数据在不断的更新输出,那输出周期如何定义呢?这个我们就来讨论一下引申的 PDO 传送方式。我们以前在培训时一直介绍CANopen协议与 DP 协议相比的好处在于 DP 是轮询的,问答方式浪费了大量的时间,而 CAN协议是广播的, 可以将 1MHz 的速率发挥至极致。这种说法形象,一般可以解释给初步接触 CANopen 的人听。其实 CANopen 的报文形式很多样化,在不同的应用场合可以采取不同的方式,上面说的称为异步方式,异步方式也分两种,一种是上面的内部时钟触发,也就是按照固定

11、时间间隔发送,另一种是事件触发,假设编码器发生转动,数据相应送出。还有一种同步方式,我们也可以口述为踏拍方式,当主站要求报数是,所有从节点按照仲裁的优先顺序进行数据发送。这三种报文方式分别在哪些场合适用呢?我们以车辆来举例。车辆开在路上,在整个车辆控制内,最重要的,具有高优先级的,应该是牵涉到安全的制动(刹车),安全气囊等等。其次是转向、车灯。再次是音响、影视系统(当然,我对车不是很熟悉,这是我的主观认识,作为一个例程)。我们可以把小的节点号分配给制动系统, 以保证数据能及时送达控制器,并采用定时报数,实时监测车辆制动系统的情况。对于音箱什么的,我们可以采用事件触发方式,在有输入控制时(比方说

12、打开收音机)进行响应。同步数据一般用在实时数据监测方面, 比方是在同一时间点查阅角度、 位置、 重量、 压力、流量等等信息,保证所监测的各个数据在很小的时间变化范围内。当然CANopen 不可能摒弃问答方式的数据采集,这可以通过SDO 访问 OD 来实现。讲到 SDO 服务数据对象,我们可以这么理解, PDO 报文在发送出去后不需要反馈信号, 总线上能消化这个数据的都可以消化,所以白话叫广播报文。而 SDO 报文是需要响应的,每一帧SDO 发出后需要等待反馈。 那这会不会引起无反馈时总线死机呢?不会, CAN 数据链路内规定了超时, 在一定时间内得不到回答, 总线将进行后面的作业,多次询问无果

13、,总线会对错误节点进行屏蔽处理。 SDO 的帧格式和 PDO 的帧格式是一致的,但对有些字节的定义不同,下面就简单介绍一些编码器修改参数时用到 的帧格式。SDO中实现了 5个请求/应答协议,这里我只讲讲启动域下载与上传,其他的有兴趣可以问我要资料看。COB-ID命令 字对象 字典OD子索 引数据主从 连接 集1 byte2 bytes1 byte4 bytes我来解释一下上表,COB-ID引用第一张表的SDO地址段。假设主站需要读取1号编码器对象字典(OD) 6200H内的参数, 我们应该如何做呢?我们需要发送0x601 0x40 0x00 0x62 0x00 0x00 0x000x00 0x

14、00我们得到编码器的反馈数据是0x581 0x4B 0x00 0x62 0x00 0x0A 0x000x00 0x00上述命令的解释是,控制器通过SDO 指令读取 1 号编码器 OD 为 6200H 的编码器发送数据周期的参数, 得到编码器的回答是每隔 10ms 发送一次。 40H 和 4BH 是启动 域上传的命令字。如果需要将6200H 的参数修改为 20ms一次数据,我们应该怎么做?发送: 0x601 0x22 0x00 0x62 0x00 0x140x00 0x00 0x00反馈: 0x581 0x60 0x00 0x62 0x00 0x000x00 0x00 0x00未完待续。作为十大

15、总线来说, CANOpen 的开放性等等就不赘述了。该协议最早在汽车总线中得到了大量的推广。目前很多厂家都支持CANOpen 总线。比如施耐德、菲尼克斯等。尤其是施耐德, 目前在所有的传动产品、 中高端的 PLC 上都支持 CANOpen 总线。可能是由于所有产品在总线支持上不然Rockwell 和西门子的缘故吧。目前 CANOpen 在连接现场从站设备时,很多厂家的 PLC已经可以像step7 软件组态 profibus DP 从站设备一样,只需导入 eds 文件后,在软件中直接选择或拖拉即可。相关参数的地址定义等等都自动完成。相对来说比较简单。当然如果软件即便不支持上述方式,有个公司专门开

16、发了一个 sycon 的软件, 利用 sycon 软件也可以直接定义CANOpen从站设备。相对来说也比较简单。只不过需要做sycon 到PLC 软件的地址的映射的操作。CANOpen 总线与 Profibus DP 总线相比:1. CANOpen 的通讯速率较低, 最高 1Mbps 。 而 Profibus DP最高支持 12Mbps ;2. 两种总线随着距离的增加都会衰减, 但是 CANOpen 衰减 的更快一些;3. 理论上 CANOpen 支持 127 个子站(当然和 CANOpen 主站设备有关,在实际 PLC 产品中一般最大只能支持64 ,有的只能支持32 或 16 个) ,而 P

17、rofibus DP 在子站支持能力上较强;4. CANOPen 的中继器支持树形结构连接,这一点与Profibus 的总线型连接方式有区别;5. 从组态来说,集成 CANOpen 总线的设备组态方式与Profibus DP 的组态方式类似。只需导入 eds 文件即可;6. 抗干扰能力经过我使用了,感觉和 Profibus DP 差不多。当然 CANOpen 电缆有 4 种, DP 应该分普通和复杂环境两种。从电缆来说, CANOpen 电缆的适用性更强一些。以上内容,只是一己之见,不含任何广告内容,也请各位批评指正于 CANopen 协议的分布式控制系统设计孙树文杨建武(北京工业大学机械工程

18、与应用电子学院,北京 100022 )摘要:针对印刷机外围设备多分散、数据传输信息量大、实时性和可靠性要求高等问题,设计了一种基于 CAN 现场总线的分布式控制系统。监控主机运行软PLC 程序,通过PC-CAN 卡与现场 I/O 从站进行通信,形成分布式网络,简化了系统结构,提高了可靠性。 本文介绍了分布式监控系统的整体结构、 工作原理及特点;分析了 CANopen 协议、详细说明了采用 P87C591单片机开发 I/O 从站的硬件电路、 软件设计流程以及从站节点的调试方法。经系统测试和模拟运行表明, I/O 从站与监控主机通讯可靠、准确,实时性满足了印刷机控制系统的要求,具有一定的参考价值和

19、广阔的应用前景。关键词: CANopen ; CAN 总线; 软 PLC ; 分布式控制系统;P87C591中国分类号: TP247 文献标识码: ATheDesignofDistributedControlSystemI/OSlaveBasedonCANopenProtocolSunShuwen,YangJianwu,ZhangHuihui,ZhaoJianguang(CollegeofMechanicalEngineering&AppliedElectronicsTechnol ogy,BeijingUniversityofTechnology,Beijing100022,Chin

20、a)Abstract:Counteringtheproblemsexistingintheprintingmachine, suchastheexcessiveanddistributedperipheralequipment,manyi nformationexchange,thereliability,veracityandrealtimefeatureof datacommunication,adistributedcontrolsystembasedonCAN(C ontrolAreaNetworks)Busisdesigned.TheSo sbrilliantandvalidity

21、beyondtraditionalcontrolmethodsandissuitableforsimilarpractic alengineering.Keywords:CANopen,CANbus,So0 引言印刷机有大量的外围设备,存在大量的I/O 信号,如何保证外围设备与控制主机之间的实时通讯, 使得印刷机可靠运行, 目 前采用的方式主要有2种:1)采用传统的PLC构成集散型控制系统(DCS); 2)采用基于现场总线的分布式 I/O系统。采 用前一种方式存在系统不开放、硬件投资大、布线复杂、维修不 便的缺点, 具有明显的局限性1 。 而采用第二种方式基本局限于国外产品, 如西门子公司的基

22、于 Profibus 分布式 I/O 系统, WAGO公司基于 CANbus 、 DeviceNET 、 Profibus 分布式 I/O 系统,但价格较高。 因此我们设计了基于 CAN 现场总线技术与软PLC 的印刷机分布式控制系统。CAN ( ControllerAreaNetwork )总线,又称控制器局域网,是由德国 Bosch 公司在 80 年代初为分布式系统在强电磁干扰环境下可靠工作而开发的一种串行数据通信网络, 并有效支持分布式控制和实时控制。 目前 CAN 总线规范已被ISO 国际标准组织指定为国际标准, 并得到了 Motorola , Intel , Philips , Si

23、emens ,NEC 等公司的支持1。 CANopen 是 CAN 总线的一种有影响力的应用层协议, 近年来得到了广泛的应用, 它保证了各种厂商设备的互用性、互换性,同时提高了信息传输的可靠性,实时性。其应用范围已经扩展到了汽车行业、机械工业、纺织机械、农用机械、 机器人、 数控机床、 医疗器械、 家用电器及传感器等领域。软 PLC 是一种基于 PC 机的新兴自动控制技术,不仅能够实现硬 PLC 的所有功能,而且遵循IEC61131-3 编程标准,为用户提供了更多的开放性和适用性。1 控制系统的整体构成2整个控制系统由监控计算机、 PC-CAN 适配卡、 I/O 从站节点( n<110

24、) 、 CAN 总线网络组成,其系统结构如图 1 所示。分布在现场的 I/O 从站节点连接印刷机的外围设备,并通过CAN通信接口与总线相连;监控计算机运行软PLC 软件并通过PC-CAN 适配卡和连接在CAN 总线网络上的各个从站节点之间进行实时通信,从而实现整个印刷机组的分散控制和集中监管。控制系统中的 I/O 从站节点由 CAN 控制器、 CAN 收发器和外围电路(如:光电隔离、 I2C 、 LED 显示等)组成。监控计算机可以选用普通PC 或工控机 IPC 。 PC-CAN 适配卡用来完成CAN 总线和监控计算机之间的协议转换,可以选用 PCI 总线适配卡、 ISA 总线适配卡。各个控制

25、节点之间通过屏蔽双绞线互联构成CAN总线网络,总线两端连接 120Q的阻抗匹配电阻,用来提高系统的稳定性、增强系统的抗干扰能力。2 I/O 从站的硬件设计目前, 有两种 CAN 总线器件可以选择: 一种是带片上CAN的微控制器,如 P8XC591/2 、 87C196CA/CB 、 MC68376 等;另一种是独立的CAN 控制器,如控制 Philips 公司的 SJA1000 、82C200,Intel 公司的 82526 、以及 Microchip 公司的 MCP2510等,但是独立的CAN 控制芯片需要外接一个微处理器,接收外部 CPU 的控制才能运行。 本系统选用的是Philips 公

26、司的带有在片 CAN 控制器的 P87C591 微型控制器,这样大大简化了节点的硬件设计,提高系统的可靠性2 。I/O 从站节点的硬件设计上采用了模块化结构, 由微控制器、CAN 通信模块、输入输出接口模块、扩展接口模块、参数设置模块组成,其整体结构如图 2 所示。P87C591 是一款 8 位高性能微控制器, 具有片内 CAN 控制器,从 80C51 微控制器家族派生而来,采用了强大的 80C51 指令集并成功的包括了 Philips 半导体 SJA1000CAN 控制器的PeliCAN 功能。 CAN 收发器采用的是PhilipsPCA82C250 芯片,它具有高速稳定的差动发送和接收能力

27、;为了提高抗干扰能力,系统中采用双路电源模块供电, 在控制器和传输介质之间加接光电隔离器件ADuM1201 高速数字隔离器替代传统的光电耦合器(如 6N137 ) ,简化了电路,极大的降低了功耗。从站节点 I/O接口模块采用了光电隔离电路, 提高了抗干扰能力; 为了使本系统具有更好的适用性和扩展性, 预留了基于 I2C 总线扩展接口模块。此外,从站节点还外扩了 RS232 接口;以及电源信号、通讯状态、 I/O 端口、故障信号等状态的 LED 显示。3 I/O 从站的软件设计在 I/O 从站的软件设计中,使用 C51Windows 编程语言实现各种功能, 与从站节点的硬件设计相一致, 软件设计

28、也遵循模块化的设计原则, 使控制软件具有易读、 易扩展和易维护的优点。各功能模块之间通过入口和出口参数相互联系, 组合灵活且方便3 。从站节点的软件设计流程如图 3 所示。3.1 CANopen 通讯协议 45CANopen 协议是 CiA 协会基于 CAN 总线定义的应用层协议之一,在各种控制系统中得到了广泛应用。 CANopen 设备模型如图4所示,不同设备通过CAN总线进行连接组网,CANopen 通信协议接口用于提供在总线上收发通信对象的服务; 不同 CANopen 设备间的通信都是通过交换通信对象来完成的。CANopen 协议中定义了 4 种通信对象 (通讯模式) , 用于处理不同作

29、用的信息,包括:1) NMT对象,用来传递主节点对整个网络系统的管理信息;2) SDO对象,用来传递网络系统中的配置信息;3) PDO对象,用来实时传送过程数据信息;4 )特殊功能对象,包括同步对象(Sync )紧急对象(Emergency )时间戳对象( TimeStamp )等,详细内容可参考CANopen 协议相关文档 4 。 设备对象字典是CANopen 协议的核心概念, 描述了该设备使用的所有数据类型、 通信对象和应用对象, CANopen协议的网络系统中每一个设备都要实现一个唯一的对象字典, 区别在于设备类型不同其内容则不同。 对象字典中每个对象拥有一个唯一的 16 位主索引和8

30、位子索引,由此实现对其中各种对象的访问。 对象字典在系统软件设计中得以实现, 然后使用标准化的 EDS 文件对其进行描述。 EDS 文件的编写,基本可以借鉴同类设备的 EDS 文件, 只需针对具体不同应用做出相应修改即可。3.2 I/O 从站的 CANopen 通讯协议实现I/O 从站的软件设计遵循CANopen 协议预定义主/从连接集,在程序中采用预定义的强制性的缺省标识符( CAN-ID )分配表。从站节点支持4 个接收 PDO 对象, 4 个发送 PDO 对象,1 个 SDO 对象, 1 个紧急对象和 1 个节点错误控制对象。协议的相关细节可查看文档 6 。 在系统的软件设计中, 结合通

31、讯协议的特点,大多采用了结构体的方式来定义诸如 CAN 报文、发送和接收 PDO 配置对象、 CANopen 协议配置对象等,通过定义结构体型指针变量完成对相关数据的读写, 给程序的编制带来了方便。 此外, 利用定义数组的方法实现了对象字典和过程数据影像的操作。在SDO 报文处理子函数中,通过被访问对象的主索引和子索引,以数组查询的方式实现了对对象字典的读写访问。CANopenI/O 从站的状态机转换通过判断接收 NMT 报文命令字, 对心跳报文标志字节代码进行读写, 通过程序散转方式得以实现。对 PDO 、 SDO 通讯对象的处理则根据心跳报文标志字节代码指明的当前状态分别进行处理。3.3

32、I/O 从站的调试从站节点的开发与调试采用了德国 PEAK 公司的 CANopen开发系统,硬件包括PCI 和 USB 接口的 CAN 卡,软件是PCANopenMagicPro3.07 专业开发版,很好的实现了对CANopen 网络节点的配置、分析和实时监控。调试所采用的通讯结构如图1所示,通过USB-CAN适配器监控主机与CAN 总线网络连接,构成主从式的网络结构,这种方式在后续系统组网调试时可以方便地实现对CAN 总线网络的监控。 通过 PCANopenMagicPro3.0 软件可以对网络上传输的CANopen 通讯对象报文进行实时跟踪;通过加载从站设备的EDS 文件实现对从站节点进行

33、配置;可以方便地实现对某个设备对象字典的访问。在调试过程中,要注意保持CAN 总线网络中主从设备的 CAN 波特率要一致, 否则将不能建立正常的通信。4 控制系统的测试平台控制系统的整体测试采用如图1所示的网络结构。监控计算机运行德国 3S 公司的 CoDeSys 软 PLC 软件及 RTE 实时程序组件,作为 CAN 总线网络的主站(相当于一台高性能可编程控制器) ,通过 PCAN-PCI 卡与自行设计开发的 I/O 从站节点进行数据通信, 构成了基于软PLC 和 CAN 现场总线的分布式I/O 控制系统。在控制系统的硬件连接完成后, 还需要在监控计算机上通过CoDeSys 软件对整个网络进行组态,包括:安装系统支持的PCAN-PCI 卡的驱动程序(由 3S 提供) ,并加载到 RTE 中;加载从站设备的 EDS 文件;设置CAN 相关通讯参数(如波特率,本系统设置为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论