|
加载中,请稍候...
|
|
CAN应用层协议CANopen
关键词:
|
|
简介:CANopen协议在机器人控制器中的应用CAN总线是一种广泛应用于工业自动化、汽车工业和自动控制系统的现场总线。相对于串行接口RS232和串行总线RS485,它能有效的支持分布式控制和实时控制,由于其高可靠性和实时性的特点,CAN总线能够满足系统高性能的要求,已经深入到各个行业,例如车辆、工业控制、医疗... |
品 牌
|
ixxat
|
|
产 地
|
德国
|
型 号
|
PXF2981
|
折 扣
|
其他电询
|
|
咨询专家:
|
产品说明:
CAN总线是一种广泛应用于工业自动化、汽车工业和自动控制系统的现场总线。相对于串行接口 RS232和串行总线 RS485,它能有效的支持分布式控制和实时控制 ,由于其高可靠性和实时性的特点 ,CAN总线能够满足系统高性能的要求 ,已经深入到各个行业 ,例如车辆、工业控制、医疗器械、海事应用等。
在 CAN标准协议 CAN2.0协议、国际标准 ISO1 1898定义物理层和数据链路层的基础上 ,由 CiA(CAN in Automation)组织监督开发了 CANOpen高层协议。CANOpen标准草案可以在网络上免费获得。它主要提供设备间的互操作性 ,标准化、统一的系统通讯模式 ,设备描述方式和网络功能以及网络节点功能的任意扩展 ,在工业控制中具有良好的应用前景。
本文主要提出了 CANOpen协议在机器人控制器中应用的方案 ,并介绍了 CANOpen协议在井下救援机器人机器人控制器中的应用 ,包括软硬件设计以及效能分析 ,为机器人控制系统中传感信息和控制信息的传输提供了一种新的解决方案。
CAN协议只包括物理层和数据链路层两个底层协议 ,而 CANOpen在其基础上规定了应用层协议 ,其通讯模型如图 1所示:
林茂:硕士研究生
良好的分层和面向对象的设计理念使得 canopen协议中通讯模型条理清晰。 CANOpen协议接口提供在总线上收发通信对象的服务 ,不同设备通过 CAN总线进行连接组网 ,设备间通过相互交换通讯对象进行通讯。
CANOpen协议中定义了四种通讯对象用于对不同作用的信息进行处理 :SDO、PDO、NMT和特殊对象 ,分别用来实现服务数据通信、过程数据通信、网络管理和紧急情况处理等功能。 SDO用来传递网络系统中的配置信息 ;PDO用来实施传送过程数据信息 ;NMT对象用来传递主节点对整个网络系统的管理信息;特殊功能对象用于同步、应急指示和时间标记对象。
位于 CANOpen设备模型中通信层和用户应用层之间的设备对象字典是 CANOpen协议中最核心的概念 ,它为用户应用层提供一个由索引和子索引唯一确定的入口。通过这个入口可以访问该设备使用的所有数据类型、通信对象和应用对象 ,基于 CANOpen协议的网络系统中每一个设备都要实现一个唯一的对象字典 ,区别在于若设备类型不同则其内容不同。
CANOpen协议采用面向对象的设计思想 ,具有高度模块化特性和很高的适应性 ,它不仅仅为应用层定义了通讯协议 (DS301等),还面向其他具体的应用定义了大量的规范 (DS406等),遵循这些规范开发出的 CANOpen设备能实现不同公司产品间的相互操作 ,能实现同一种应用对应多产品的替换性 ,大大降低了系统通讯的开发难度和扩展难度。
3基于 CANOpen协议的机器人控制器通讯方案
3.1硬件平台
本文在实际的机器人控制器设计中 ,采用 CANOpen协议实现了多电机驱动器、多传感器的协调控制 ,硬件平台的系统结构如图 2所示。
系统中 ,使用四台直流无刷电机作为井下机器人运行的动
机器人技术
力系统 ,实现对井下机器人动作的操纵。机器人控制器使用主频为 1G的 CPU板,通讯设备使用双通道隔离式高性能 CAN总线适配卡 ,传输速率最大为1Mbps。 CPU通过 PC104总线和 CAN适配卡相连以获得高速的数据传输。
各电机驱动器和机器人控制器之间 ,码盘传感器以及倾角传感器等传感器与机器人控制器之间的通讯均采用 CAN接口。当系统运行时 ,控制器从个传感器采集必要的环境参数 ,根据环境参数作出规划 ,然后对各电机驱动器发送控制指令。
3.2机器人控制器通讯方案设计
整体通讯方案采用 canopen协议以保证数据传输的可靠性和实时性 ,同时保证各子系统之间通讯的简便性以及良好的扩充性能。
机器人控制器中 4台电机驱动器和相应的码盘传感器以及其他传感器均遵循标准 CANOpen协议 ,作为 CANOpen网络中的不同节点与上位机进行通讯。为了达到高实时性和高的总线利用率 ,所有控制指令和状态采集的数据均使用 PDO对象来传输 ,其中包括驱动器和码盘的状态的传输、驱动器控制指令的传输以及其他传感器如电源使用量传感器状态的传输。机器人控制器作为主站给各从站 (驱动器和各种传感器 )发送控制指令 ,而各从站将各自设备对应的状态值回送给机器人控制器进行实时控制并保存数据。
每个控制周期中 ,根据对象的传递过程来计算需要的 CAN数据包个数 ,单个电机驱动器的控制数据使用 1到 3个 CAN数据包 ,确认同样需要 1到 3个 CAN数据包 ,单个码盘状态的采集需要 1个 CAN数据包 ,电源传感器状态的采集需要 1个 CAN数据包。系统最终会实现为四个码盘 ,四个电机加上一个电源传感器。所以每个控制周期的 CAN数据包数大致是 29个,所以一个周期传输传感器采集数据和控制数据总的有效数据量大约 232字节。每个数据包有11bit的 ID,所以在选择 CAN通讯最大波特率 1Mbps的时候 ,可以得到最小采样周期是 :
(1)公式 1是只考虑了有效数据位的传输所计算得到的采样周期。在实际的总线传输中 ,由于 CAN总线物理层的控制位得占用一部分总线资源 ,所以最小采样周期应该大于 2.18毫秒。一般机器人控制器的采样周期是数十毫秒级 ,所以采用
CANOpen协议来传输传感器数据和控制数据是能够充分满足要求的。
3.3软件设计
控制器主要功能部分电机控制模块和传感器采集模块均采用使用 CANOpen接口模块提供的 CANOpen接口和 CAN接口 API提供的 CAN卡传输接口来通讯。
为了提高整个软件复用性以及松耦合性 ,首先在 CAN卡厂商所提供的 CAN接口 API之上封装了一个标准的 CAN接口 API。CANOpen接口作为一个独立的模块 ,使用此标准的 CAN接口 API来访问 CAN总线 ,可以达到使 CANOpen接口与 CAN接口卡类型无关的目的。上层的电机控制模块和传感器采集模块均调用CANOpen接口模块所提供的通讯函数来传输控制命令和状态参数。
在电机控制和传感器采集模块的内部 ,对 CANOpen网络从节点的编程流程如图 3所示 (电机控制模块内部的流程 ):
CAN接口卡的初始化是在程序的初始化中完成的 ,首先从程序的全局环境中得到当前初始化好的 CAN接口对象 ,通过此 CAN接口对象来收发数据。将各驱动器和码盘等传感器添加为 canopen网络的从节点。然后使用 CANOpen模块提供的 SDO读写函数来读写此从节点上的对象字典 ,检验主从站设备是否正常工作。接收到从节点返回的 PDO数据报文之后 ,开始周期循环。在每一个同步周期内 ,由主站向从站发送载有控制命令的 PDO对象 ,从站则向主站发送载有当前状态信息的 PDO对象。从而实现指令和运行信息的双向读取。
4实验验证与性能分析
通过在机器人控制器中采用 CANOpen协议来传递控制参数和码盘等传感器信息 ,可以很好的达到实时通讯和控制的目的。
图 4是利用 CANOpen协议获得的电机驱动器速度跟踪曲线。
其中实线是电机速度设定值 ,电机速度为梯形速度规划 ,虚线是通过 canopen协议传输的码盘跟踪值 ,控制周期和为 20ms。从采集的数据可以得出跟踪速度的误差小于 0.5%。达到了设计目标。
在系统增加到四个电机驱动器 ,四个码盘传感器和一个电源传感器的时候 ,运行过程中使用示波器采集 CAN总线上电平信号得到的采样图形见图 5,图中显示的是四个控制周期中总线上主从节点之间的数据传输。在一个 20ms时间长度的控制周期的系统中 ,总线数据传输的时间大约是 5ms,总线的负载大约在 5%到 8%之间 ,符合前文分析的结果。在这种负载条件下 , canopen协议在机器人控制器的应用中能够很好的满足其实时性通讯的要求。
在系统的调试过程中 ,从一个节点 ,到多节点的协同控制 ,都可以很灵活的进行配置。因为在程序的设计过程中 ,功能模块之间保持了很好的独立性 ,各个模块之间没有功能耦合 ,每个模块增加减少内部对象都对其他模块没有任何影响。所以每个模块内部有几个节点 ,就只需要增加相应的节点对象。
5结束语
CANOpen协议以其开放 ,精炼的特点流行于欧洲 ,在各个工业领域都得到广泛的应用 ,本文在介绍 CANOpen协议的基础上 ,提供了将 CANOpen协议使用在机器人控制器上的设计与方案 ,并按照模块化和开放性的实现要求 ,实现了机器人控制器的可靠运行。分析结果表明 ,在机器人控制器中使用 CANOpen协议的方案能够很好的为机器人控制器提供实时可靠的数据传输。并以其内建的面向对象特性为机器人控制器提供了良好的设备扩充能力和模块独立性 ,具有一定的先进性。该方案为 CANOpen协议的应用提供了一种新的思路 ,具有一定的借鉴意义。
本文作者创新点 :提出 CANOpen协议使用在机器人控制器上的设计方案并得以实现。分析结果表明 ,采用 CANOpen协议的机器人控制器具有良好的性能和模块独立性。具有一定的先进性。
在局域网内传输控制信息和小数据包时 ,宜采用 UDP而非 TCP。在 UDP下,无需通信双方进行发起连接和监听连接的操作。在 MCU侧(下位机 )创建 socket时,不应指定目的 IP地址和端口号 ,以便任意主机和端口都能访问它。为了保证采集数据的传送,要在上位机的初始化程序中向下位机发送一个包含任意信息的包 ,以便下位机从该包中提取出目的端的 IP地址和端口号。为此 ,在启动系统时 ,必须先启动下位机 ,然后再启动上位机。在单 socket的情况下 ,下位机只在收到第一个包时才进行目的端 IP地址和端口号的提取工作 ,并不对随后收到的包进行该工作。上位机在创建一个 UDP socket后,必须绑定一个固定的端口号 ,否则 ,由于上位机创建 socket的函数会自动分配一个端口号,上位机重启一次 ,该端口号就会在上次分配值的基础上增加 1,这将导致上位机在重启后不能与下位机通信。
虽然在 Silicon Labs公开发布的有关 TCP/IP协议栈的文档中都没提到 SPI0的中断问题 ,但从我们实际编程来看 ,如果使能了 SPI0中断 ,那么协议栈的接收函数将永远处于等待状态。因此 ,为了使协议栈能正常工作 ,应屏蔽 SPI0中断。
以本方案设计的设备已实现试运行。由于该方案功能完备和实用 ,成本和开发技术门槛低 ,在数据采集、工业监控、网络数据传输等领域有较高的应用价值。
它的创新处在于扩展了 AD7705的应用、使基于 51的设备也能进行网络通信和配备 LCD触摸屏 ,同时还能进行语音的录放。
Biography:PAN Xu -bing(1965 -),Male(Han Nationality),master, engineer, Beijing University of Posts and Telecommunications, Working at communications and embedded system.
canopen
参数资料:
|
CAN应用层协议CANopen
|
|
|
|