基于 CANOpen协议从节点研究-现场总线-酷德网 - CoDeSys软件教程下载,CoDeSys工控资讯门户 

酷德网

Heesn-HSC6150
查看: 2207|回复: 0

基于 CANOpen协议从节点研究

[复制链接]
  • TA的每日心情
    擦汗
    2019-8-13 14:13
  • 签到天数: 32 天

    [LV.5]常住居民I

    发表于 2015-1-21 08:40:17 | 显示全部楼层 |阅读模式
    CANopen作为一种开放的、标准化的 CAN总线应用层协议, 在国内外各种机电系统与仪表
    装置中得到了广泛的应用。本文详细阐述并分析了 CANopen的协议结构、对象字典和通信对象,研究了国外的典型 CANopen协议栈的结构与特点,提出了进行 CANopen协议规范的通信接口开发的有效方案,并给出了 CanFestival在微控制器上的实现。关键词:CANopen;现场总线;协议栈;从节点中图分类号:TP391 文献标识码:A 文章编号:1009-0134(2010)02-0027-04
    0 引言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协议结构


    jiyu-canopen-xieyicongjiedianyanjiu_img_1.jpg
    1.2 对象字典对象字典(ObjectDictionary)是 CANopen协
    议的核心,它连接了CANopen设备的通讯接口和应用部分,如图 2所示。
    基金项目:天津市自然科学基金重点项目(07JCZDJC09600);天津中小企业创新基金(09ZXCXGX19300);天津市重点实验室:复杂工业系统控制理论及应用重点实验室的资助。
    作者简介:陈在平(1950-),男,教授,硕士,主要研究方向为智能控制,工业网络控制理论与技术。
    jiyu-canopen-xieyicongjiedianyanjiu_img_3.jpg
    组,每个对象采用一个16位的索引值来寻址,同时为了允许访问数据结构中的单个元素,还要定义一个 8位的子索引。CANopen网络中每个节点都有一个对象字典,其中包含了描述这个设备和它的网络行为的所有参数,通过访问对象字典可以得到各节点的状态,确定网络的通信模式,进行相应的网络管理。
    1.3 通信对象CANopen协议规定了 4类通讯对象:SDO(ServiceData Object,服务数据对象)、 PDO(Process
    Data Object,过程数据对象)、NMT(NetworkManagement,网络管理对象)以及特殊功能对象。
    1.3.1 SDOSDO用于传送组态数据,对设备进行配置,它通过建立两个CANopen设备的点对点通信来实现可靠的数据传输。SDO的传输是采用客户机 /服务器通讯方式,通过使用索引和子索引,SDO使客户机能够访问服务器对象字典中的对象。
    SDO可以传送任何长度的数据,当数据超过 4个字节时,将被分拆成几个CAN报文。由于数据会被分拆成几段,在发送 SDO的第 1个报文后,其后的每段中都可以包含 7个字节的数据,而最后一段可以包含一个终止符。
    1.3.2 PDOPDO采用生产者/消费者方式进行传输,用于从一个发送方(生产者)向一个接受方(消费者)或多个接收方(广播形式)传输实时控制参数、变量,因此 PDO的优先级高于 SDO。但一个PDO最大只能传输 8个字节数据。
    PDO对应于设备对象字典中的条目,并且为应用对象提供访问接口。报文中的数据类型和映射到PDO中的应用对象是由设备对象字典中所对应的映射参数来描述的,若设备支持可变PDO映射,那么可以使用 SDO报文来重新配置 PDO映射参数 [2]。
    1.3.3 NMTNMT用于对网络设备进行管理、控制,并及时发现设备故障。它采用主从结构,一个网络中只有一个 NMT主节点,其余的为从节点。主节点对从节点提供状态管理、节点保护等服务。
    每个 CANopen从节点都有初
    始化(Initial-isation)、预操作(Pre-Operational)、操作(Operational)和停止(Stopped)4个状态,主节点使用NMT来控制从节点在各状态之间的转换。此外,NMT主节点还会监控从节点的状态,以确定某个不发送PDO的从节点是否已经脱离总线,并检测设备的网络接口错误。
    1.3.4 特殊功能对象特殊功能对象主要包括同步对象、时间戳对象和应急对象。
    同步对象(SynchronizationObject)是由同步对象生产者为同步对象消费者提供的时钟信号,为设备提供了标准的通信周期。
    时间戳对象(Time StampObject)通常表示从1984年 1月 1号后的天数和午夜过后的毫秒数,一共 6个字节,为对时间要求苛刻的设备提供毫秒级的高精度同步协议。
    应急对象(EmergencyObject)在一个设备内部发生严重错误的情况下被触发,并使用高优先级发送到其他设备,适用于中断类型错误警告。
    2 基于开源代码 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是由斯洛文尼亚的 JanezPaternoster所编写的,基于 Microchip公司PIC18控制器的开源 CANopen协议栈。它可作为主节点或从节点,提供多个设备之间在CANopen网络上的串行通信[4]。CANopenNode的功能齐全,协议接口完善,完全遵从于 CiA DS-301标准和 CANopen指示灯标准CiA DR-303-3。
    MicroCANopen 是由 Embedded SystemsAcademy所开发的,其代码相当精简,只保留最低限度的功能,通常只被用做单一功能模块。该协议栈的硬件需求极低,最少只需要 4k字节的代码空间和170字节的程序空间。此外,Embedded SystemsAcademy还开发了一个具备大多数 CANopen常用功能的MicroCANopen Plus版本,MicroCANopen用户可以方便地将自己的工程移植到 MicroCANopenPlus上 [6]。
    2.2 CanFestival在微控制器的实现
    本文采用 CanFestivalV3.0 RC3,以开源 CANopen协议栈在微控制器上加以实现。Canfestival协议的结构如图 3所示。
    jiyu-canopen-xieyicongjiedianyanjiu_img_5.jpg
    CanFestival的文件目录如表1所示。在CanFestivalV3.0 RC3的源代码中,提供了 MotorolaMC9S12DP256微控制器的驱动。在使用 GNU gcc编译程序后,直接烧写至MC9S12DP256控制器。通过 CAN控制器 PCA82C250MC9S12DP256CAN0端口(PM0,PM1)连接到CANopen网络,并通过MAX232将芯片上的portSTxD0)端口连接到波特率设置为 19200的控制台上,从而实现了一个典型CANOPEN从节点。
    jiyu-canopen-xieyicongjiedianyanjiu_img_6.jpg
    该协议栈也可以较为方便地移植到其他控制器上。在移植之前,首先必须确保目标控制器具有40k以上的代码空间和 2k以上的RAM。相对于自己重新编写代码来说,在官方提供的某一个最接近目标
    控制器的平台的源代
    码基础上进行修改显然是一种更加简单的方法。在移植时,需要修改的文件包括:include文件夹中与目标处理器相关的头文件、drivers文件夹中的目标控制器驱动文件以及各相关文件夹中的Makefile文件。
    此外,在编辑对象字典时,采用objdictgen文件夹中的对象字典编辑器来简便而高效地进行操作。需要注意的是,该编辑器是一个 Python应用程序,Windows用户必须安装 Python(2.4
    jiyu-canopen-xieyicongjiedianyanjiu_img_8.jpg
    有关 CANopen从节点的研究与开发仍然处于起步阶段。本文通过借鉴国外的先进经验,利用开源代码实现 CANopen协议规范,提出了进行了CANopen协议规范的通信接口开发的有效方案,这一方案对于缩短开发周期,降低开发难度,节约开发成本,加速CANopen在国内的应用与推广具有
    重要的现实意义。
    图 4 对象字典编辑器
    版以上)和 wxPython(2.6.3.2版本以上)才可以使用该程序。图3给出了对象字典编辑器的主界面,在该程序中,上半部分可以选择对象字典中的某一区域,左下部分为这一区域对象字典中的索引,右下部分为子索引,可以在这里进行具体的修改。
    CANopen作为一种非常有竞争力的总线标准,在国内外的应用已经深入到了各个领域,并且还在进一步发展。但是基于CANopen协议规范的通信接口关键技术仍然被国外若干公司所垄断,国内目前

    通过对回转式刀具切削性能测试实验台上相似
    盾构刀盘切削岩石和土壤两种工况进行有限元分析,
    得到了刀盘的应力和变形分布:刀盘危险截面位于
    牛腿与刀盘的连接处,最大应力为168.54 Mpa,最
    大变形为 0.278 mm,排除有限元模型中的边界条件
    简化和结构细部简化,最大应力位置与实际情况比
    较吻合;从刀盘整体看,大部分区域应力、变形都
    较小,具有较大的强度和刚度裕量,设计可行。本
    文的工作有助于进一步建立刀盘的参数化模型,研
    究刀盘拓扑结构对刀盘切削性能的影响。

    打赏鼓励一下!
    +10
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

    本版积分规则

    
    顶部qrcode底部
    关注酷德网订阅号,获取更多资讯!

    QQ|小黑屋|手机版|Archiver|酷德论坛 ( 苏ICP备16065247号-1 )|网站地图

    GMT+8, 2021-4-24 02:27 , Processed in 0.185970 second(s), 60 queries .

    酷德网

    © 2001-2013 Hicodesys. 技术支持 by 酷德网

    快速回复 返回顶部 返回列表