PXF2995-基于-CANopen协议从节点研究

Shanghai Passiontech Tech, 021-51870017, sales@51Lm.cn

     
     
     

基于-CANopen协议从节点研究


型号: PXF2995


简介:基于 CANopen协议从节点研究CHEN Zai-ping, WANG Feng(天津理工大学自动化学院,天津 300384) 摘要:CANopen作为一种开放的、标准化的 CAN总线应用层协议, 在国内外各种机电系统与仪表装置中得到了广泛的应用。本文详细阐述并分析了 CANopen的协议结构、对象字典和通信对象,研究了国外的典型 CANopen协议栈的结...
品牌 ixxat ixxat
产地德国
型号PXF2995
折扣其他电询

 

基于 CANopen协议从节点研究

 

CHEN Zai-ping, WANG Fen(天津理工大学自动化学院,天津 300384) 摘要:CANopen作为一种开放的、标准化的 CAN总线应用层协议, 在国内外各种机电系统与仪表

装置中得到了广泛的应用。本文详细阐述并分析了 CANopen的协议结构、对象字典和通信对象,研究了国外的典型 CANopen协议栈的结构与特点,提出了进行 CANopen协议规范的通信接口开发的有效方案,并给出了 CanFestival在微控制器上的实现。关键词:CANopen;现场总线;协议栈;从节点中图分类号:TP391 文献标识码:A 文章编号:1009-0134(2010)02-0027-04

引言CANopen协议主要包括通信规范(Commun

CAN(Controller Area Network,控制器局域网)ication Profile)和设备规范(Device Profile)。通信总线的应用范围非常广泛,但其只定义了物理层和规范(CiA DS-301)定义了基本的数据通信方式及数据链路层,而没有规定应用层,并非一个完整的其特性;设备规范(CiA DSP-401~DSP-XXX)定义

协议。所以在高级应用中,需要一个高层协议来定特定设备的行为规范。其结构如图 1所示。 义 CAN报文中的 11/29位标识符、8字节数据的使 用[1],于是 CANopen便应运而生。

CANopen是自动化 CAN用户和制造商协会

(CiA,CAN-in-Automation)定义的 CAN总线应用层协议。它采用面向对象的思想设计,具有很好的模块化特性和很高的适应性。CANopen不仅定义了应用层和通信子协议,还为大多数重要的设备类型定义了大量的规范,不同厂商遵循这些规范开发出的设备之间能够轻易实现互操作。

CANopen作为基于CAN总线的高层协议标准, 在发布后不久就获得了广泛的承认。尤其是在欧洲, CANopen协议被认为是在基于 CAN的工业系统中 占据领导地位的标准。

1 CANopen协议

1.1 CANopen协议结构

1.2 对象字典对象字典(Object Dictionary)是 CANopen协

议的核心,它连接了CANopen设备的通讯接口和应用部分,如图 2所示。

基金项目:天津市自然科学基金重点项目(07JCZDJC09600);天津中小企业创新基金(09ZXCXGX19300);天津市重点实验室:复杂工业系统控制理论及应用重点实验室的资助。

作者简介:陈在平(1950-),男,教授,硕士,主要研究方向为智能控制,工业网络控制理论与技术。

组,每个对象采用一个16位的索引值来寻址,同时为了允许访问数据结构中的单个元素,还要定义一个 8位的子索引。CANopen网络中每个节点都有一个对象字典,其中包含了描述这个设备和它的网络行为的所有参数,通过访问对象字典可以得到各节点的状态,确定网络的通信模式,进行相应的网络管理。

1.3 通信对象CANopen协议规定了 4类通讯对象:SDO(Service Data Object,服务数据对象)、 PDO(Process

Data Object,过程数据对象)、NMT(NetworkManagement,网络管理对象)以及特殊功能对象。

1.3.1 SDO

SDO用于传送组态数据,对设备进行配置,它通过建立两个CANopen设备的点对点通信来实现可靠的数据传输。SDO的传输是采用客户机 /服务器通讯方式,通过使用索引和子索引,SDO使客户机能够访问服务器对象字典中的对象。

SDO可以传送任何长度的数据,当数据超过 4个字节时,将被分拆成几个CAN报文。由于数据会被分拆成几段,在发送 SDO的第 1个报文后,其后的每段中都可以包含 7个字节的数据,而最后一段可以包含一个终止符。

1.3.2 PDO

PDO采用生产者/消费者方式进行传输,用于从一个发送方(生产者)向一个接受方(消费者)或多个接收方(广播形式)传输实时控制参数、变量,因此 PDO的优先级高于 SDO。但一个 PDO最大只能传输 8个字节数据。

PDO对应于设备对象字典中的条目,并且为应用对象提供访问接口。报文中的数据类型和映射到PDO中的应用对象是由设备对象字典中所对应的映射参数来描述的,若设备支持可变PDO映射,那么可以使用 SDO报文来重新配置 PDO映射参数 [2]

1.3.3 NMT

NMT用于对网络设备进行管理、控制,并及时发现设备故障。它采用主从结构,一个网络中只有一个 NMT主节点,其余的为从节点。主节点对从节点提供状态管理、节点保护等服务。

每个 CANopen从节点都有初

始化(Initial-isation)、预操作(Pre-Operational)、操作(Operational)和停止(Stopped)4个状态,主节点使用NMT来控制从节点在各状态之间的转换。此外,NMT主节点还会监控从节点的状态,以确定某个不发送PDO的从节点是否已经脱离总线,并检测设备的网络接口错误。

1.3.4 特殊功能对象特殊功能对象主要包括同步对象、时间戳对象和应急对象。

同步对象(Synchronization Object)是由同步对象生产者为同步对象消费者提供的时钟信号,为设备提供了标准的通信周期。

时间戳对象(Time Stamp Object)通常表示从1984年 1月 1号后的天数和午夜过后的毫秒数,一共 6个字节,为对时间要求苛刻的设备提供毫秒级的高精度同步协议。

应急对象(Emergency Object)在一个设备内部发生严重错误的情况下被触发,并使用高优先级发送到其他设备,适用于中断类型错误警告。

基于开源代码 CANopen节点的实现近年来,已经有很多公司和组织开发出了成熟的 CANopen协议栈,这为我们开发 CANopen设备提供了许多便利。但是,商用协议栈价格昂贵,会为开发增加高昂的成本,而自行开发又会耗费巨大的人力、物力和时间,因此进行CANopen协议的开发,首先想到的是如何利用现有的开源代码 [3]。目前,主要有 CanFestival、CANopenNode和MicroCANopen三种符合 LGPL和 GPL协议的开源CANopen协议栈可供我们使用。

2.1 典型的 CANopen开源协议栈CanFestival是一个由法国 Lolitech资助的完整

CANopen协议栈,可在 PC和微控制器上实现主节点或从节点功能。它用ANSI-C编写,完全支持DS301 V4.02标准,具有良好的可移植性。此外,CanFestival还提供了带有图形用户界面的对象字典编辑器,从而为生成设备的对象字典提供了便利的工具[4]

CANopenNode是由斯洛文尼亚的 Janez Paternoster所编写的,基于 Microchip公司 PIC18控制器的开源 CANopen协议栈。它可作为主节点或从节点,提供多个设备之间在CANopen网络上的串行通信[4]。CANopenNode的功能齐全,协议接口完善,完全遵从于 CiA DS-301标准和 CANopen指示灯标准CiA DR-303-3。

MicroCANopen 是由 Embedded Systems Academy所开发的,其代码相当精简,只保留最低限度的功能,通常只被用做单一功能模块。该协议栈的硬件需求极低,最少只需要 4k字节的代码空间和170字节的程序空间。此外,Embedded SystemsAcademy还开发了一个具备大多数 CANopen常用功能的MicroCANopen Plus版本,MicroCANopen用户可以方便地将自己的工程移植到 MicroCANopenPlus上 [6]

2.2 CanFestival在微控制器的实现

本文采用 CanFestival V3.0 RC3,以开源 CANopen协议栈在微控制器上加以实现。Canfestival协议的结构如图 3所示。

CanFestival的文件目录如表 1所示。在CanFestival V3.0 RC3的源代码中,提供了 MotorolaMC9S12DP256微控制器的驱动。在使用 GNU gcc编译程序后,直接烧写至MC9S12DP256控制器。通过 CAN控制器 PCA82C250将 MC9S12DP256的CAN0端口(PM0, PM1)连接到 CANopen网络,并通过 MAX232将芯片上的 portS(TxD0)端口连接到波特率设置为 19200的控制台上,从而实现了一个典型CANOPEN从节点。

该协议栈也可以较为方便地移植到其他控制器上。在移植之前,首先必须确保目标控制器具有40k以上的代码空间和 2k以上的 RAM。相对于自己重新编写代码来说,在官方提供的某一个最接近目标

控制器的平台的源代

码基础上进行修改显然是一种更加简单的方法。在移植时,需要修改的文件包括:include文件夹中与目标处理器相关的头文件、drivers文件夹中的目标控制器驱动文件以及各相关文件夹中的Makefile文件。

此外,在编辑对象字典时,采用objdictgen文件夹中的对象字典编辑器来简便而高效地进行操作。需要注意的是,该编辑器是一个 Python应用程序,Windows用户必须安装 Python(2.4

有关 CANopen从节点的研究与开发仍然处于起步阶段。本文通过借鉴国外的先进经验,利用开源代码实现 CANopen协议规范,提出了进行了CANopen协议规范的通信接口开发的有效方案,这一方案对于缩短开发周期,降低开发难度,节约开发成本,加速CANopen在国内的应用与推广具有

重要的现实意义。

图 4 对象字典编辑器

版以上)和 wxPython(2.6.3.2版本以上)才可以使用该程序。图3给出了对象字典编辑器的主界面,在该程序中,上半部分可以选择对象字典中的某一区域,左下部分为这一区域对象字典中的索引,右下部分为子索引,可以在这里进行具体的修改。

CANopen作为一种非常有竞争力的总线标准,在国内外的应用已经深入到了各个领域,并且还在进一步发展。但是基于CANopen协议规范的通信接口关键技术仍然被国外若干公司所垄断,国内目前

 

通过对回转式刀具切削性能测试实验台上相似

盾构刀盘切削岩石和土壤两种工况进行有限元分析,

得到了刀盘的应力和变形分布:刀盘危险截面位于

牛腿与刀盘的连接处,最大应力为 168.54 Mpa,最

大变形为 0.278 mm,排除有限元模型中的边界条件

简化和结构细部简化,最大应力位置与实际情况比

较吻合;从刀盘整体看,大部分区域应力、变形都

较小,具有较大的强度和刚度裕量,设计可行。本

文的工作有助于进一步建立刀盘的参数化模型,研

究刀盘拓扑结构对刀盘切削性能的影响。


url: http://www.51lm.cn/p/templates/cn/show.php?cid=0&aid=2995

 

电话400-878-1895, 传真:021-51561359 邮箱:sales@51LM.cn
sales@51LM.cn 上海徐汇区斜土路2601号嘉汇广场T1-11B