型号: PXF2999
Abstract: With the CANopen protocol,the upper control of digital servo was realized in the CNC system based on the FPGA,MCP2510,MCP2551 and IDM640-8EIA digital servo drive hardware. The data sending and receiving between master and slave were carried out with the PDO( process data objects) and SDO( service data objects)mode. During the compiling process,VHDL was the main program language,the application function of CANopen master stage can berealized in FPGA. The results show that the digital servo can drive the servo motor in agreement with the requirementsfrom the upper control instructions and realize the CANopen communicates successfully.[Ch,6 fig. 3 tab. 10 ref.] Key words: CANopen protocol; field-programmable gate array( EPGA); digital servo; object dictionary
1研究背景之间的通信速度大大提高,传统的脉冲式数据传输已
多轴、多通道复合加工控制策略是当今世界数控经很难满足这种要求。而数字伺服的出现能很好的解技术研究的热点也是难点。其核心问题就是控制器与决这一问题,组成伺服驱动电路的位置、速度和电流控多路伺服驱动之间的通信问题,这里的通信包括控制制环节部分实现数字化,甚至以单片微机或高速数字信号的传递、状态信号的反馈等。传统的伺服系统控信号处理器为硬件基础,进行全数字化控制。文章提制信号都是以脉冲的形式发出,通过脉冲当量再换算出了一种基于 CANopen协议的数字伺服驱动方案。 出相应的电机转数,但是随着数控系统的发展,多轴、2设计方案概述高速、高精度数控系统所要求的数控系统与伺服驱动系统架构如图 1所示,以 FPGA为硬件基础,建立
收稿日期 :2011-04-11;修回日期 :2011-04-18基金项目 :国家重大科技专项(2009ZX04004-021 );安徽省科技创新专项( 2010AHDS0242)作者简介 :韩江( 1963),男,河南洛阳人,合肥工业大学教授,博士生导师,主要从事现代数控技术与数控系统,数字化与网络化制造技术及其装备等方面的研究,已发表论文 40余篇,出版教材 2部,专著 1部。通信作者:黄涛,E-mail:huangtao501@ 163. com
·68·轻工机械 Light Industry Machinery 2012年第 1期
CANopen主站,并组建网络,将各个数字伺服驱动连接在 CANopen网络中。CANopen主站负责整个网络的运行和管理,监视数字伺服驱动上的状态信息,并将数控系统插补器中得出的数据信息传给数字伺服驱动。 IDM640-8EIA型数字智能伺服是一款基于最新 DSP技术的全数字智能伺服驱动器,集多类电机驱动与运动控制功能一体。内置 CANopen通信对象字典,使用时需对对象字典中的参数进行配置设定。数字智能驱动器可将主站发送来的报文中的有效数字信息提取出来,在驱动器内部对数据进行加工,计算出电机运动的位移、速度、加速度等运动参数,执行相应的运动,以实现数控系统的运动控制。
图 1基于 CANopen协议的数字伺服系统架构
Figure 1 Frame of digital servo system
based on CANopen protocol 3 CANopen主站的硬件设计
CANopen协议为一种开源协议,具有较高的配置灵活性,较高数据传输能力,较低的实现复杂度,支持各种 CAN厂商设备的互用与互换[2]。该协议一经推出便在欧洲得到了广泛的认可与应用,通过对 CANopen协议规范文本的多次修改,CANopen协议在稳定性、实时性、抗干扰性等方面都得到了进一步提高。CAN协议只定义了物理层和数据链路层 2个底层协议,而 CANopen协议在其基础上定义了应用层协议,其模型如下图 2所示[3]。CANopen主站主要是由收发器、CAN控制器以及 CANopen应用层芯片组成,其中 :
1) CAN收发器为协议层中的物理层,把 CAN控制器生成的数字信号转化成为适合总线传输的(差分输出 )信号。本文采用的收发器为 MCP2551芯片,MCP2551是一个可容错的高速 CAN器件,为 CAN协议控制器提供差分收发能力,具有很强的抗干扰性。
CANopen应用层芯片加上 CAN控制器和 CAN收发器是构成 CANopen主站的三大部分,在外加一些外围电路就形成 CANopen主站的硬件电路,原理图如图 3所示,MCP2510通过 SCK、SI、SO和 CS与 FPGA的 I/O接口相连。
图 2 CANopen通信模型 Figure 2 CANopen communication model
[自控 ·检测]韩江,等基于 CANopen协议的数字伺服电机通信主站研究·69·
图 3 CANopen主站原理图 Figure 3 Task scheduler in CANopen master
4 CANopen主站任务调度状态机
有限状态机 ( Finite-State-Machine,简称 FSM)在数字集成电路中是指输出取决于过去输入部分和当前输入部分的时序逻辑电路,它将一个时序逻辑抽象成一个同步有限状态机,有限个状态以及在这些状态之间的转移和动作等行为的数学模型就是状态机的调
度[5-7]。
CANopen主站应用层芯片共包含 14种状态。如图 4所示,当主站上电以后,首先需要对 CAN控制器与 CANopen网络进行初始化,包括 SPI接口初始化,引脚功能配置,CAN控制器工作模式设定等。而后状态机跳转到主站应用层接口任务状态,此任务状态的控制逻辑最为复杂,上接 4个状态输入,下启 5个输出状态。该状态对 CAN控制器进行监控,根据 CAN控制器的中断类型,进行相应的操作,如读到接收报文中断时,便启动 CAN报文接收状态 ;若长期无报文接收则新 PDO生成状态进行数据发送;若满足其他要求则进入其他相应状态。
当第 1次进入 st1时,需跳入新 Sync生成状态以产生同步报文,使整个网络进行同步。第 3个状态为报文接收,在该状态被启动以后,CAN控制器接收缓冲区的报文被取出存放在 FPGA的接收缓冲区中,同时 CAN控制器的相关状态寄存器将被复位。接下来是报文解析分发状态,在此模块根据接收报文的 COBID将报文分类,并相应地启动 PDO处理、SDO处理和 NMT处理 3个状态中相应的状态。随后报文将在此 3个处理器中进行处理。新 PDO生成状态模块用于产生新的 PDO数据,数控系统插补器计算的数据结构都是由此模块发送给相应的轴节点。新 SDO生成状态模块是进行对象字典读取与改写的场所。新 NMT生成状态模块用于网络管理指令的下达。报文封装状态
图 4 CANopen主站状态转移图 Figure 4 State transition diagram of CANopen master
·70·轻工机械 Light Industry Machinery 2012年第 1期
模块是将各个状态产生的报文按照 CANopen协议进行封装。封装好之后的报文需通过 CAN报文发送状态模块进行发送。主站应用层接口在接收到错误中断时,便启动错误处理,经过分析之后若需要通过 NMT报文进行管理的则跳至新 NMT报文生成状态以产生网络管理报文,若无需响应则直接返回主站应用层芯片接口进行其他处理。
如表 1和表 2所示,CAN报文包括帧起始、仲裁字段、数据段、CRC校验以及帧结束几大部分组成[8],其中仲裁字段定义了 8个优先级,每个优先级拥有 220个 COB-ID,范围从 1到 1760。CRC校验是为了确保报文传输的正确性。CANopen协议则是将自己的数据信息按照协议要求打包放在 CAN报文的 8字节数据当中。
5基于 CANopen协议的数字伺服电机控制
5. 1 SDO数据帧
表 1和表 2表示出了 CANopen服务数据信息 ( SDO)报文的帧结构形式,SDO将 8字节数据段分为请求码、对象和子对象索引以及 4字节数据,从而进行对象字典数据的读写。
表 1请求帧 (主站 -数字伺服 ) Table 1 Request frames ( master-digital servo)
8字节数据字段
帧起始 | 仲裁字段 | 请求码 | 对象索引 ( index) | 对象子索引 ( sub-index) | 数据 ( 4 Byte) | 校验 | 帧结束 | ||
---|---|---|---|---|---|---|---|---|---|
COB-ID | |||||||||
(数字伺服从站 TD) | RTR | Byte 0 | Byte 1 Byte 2 | Byte 3 | Byte 4 Byte 5 Byte 6 | Byte 7 | CRC |
表 2响应帧 (数字伺服 -主站 ) Table 2 Response frames ( digital servo-master)
8字节数据字段
帧起始 | 仲裁字段 | 响应码 | 对象索引 ( index) | 对象子索引 ( sub-index) | 数据 ( 4 Byte) | 校验 | 帧结束 | ||
---|---|---|---|---|---|---|---|---|---|
COB-ID | |||||||||
( CANopen主站 TD) | RTR | Byte 0 | Byte 1 Byte 2 | Byte 3 | Byte 4 Byte 5 Byte 6 | Byte 7 | CRC |
5. 2数字伺服电机的对象字典个元素,同时定义了一个 8位的子索引[9]。由于对象对象字典 ( Object Dictionary)是 CANopen协议的字典条目众多,再此以索引号为 1800h( TPDO1通信参核心,它连接了 CANopen设备的通讯接口和应用部数)的对象字典为例,如表 3所示,可通过修改相应对分,对象字典是一个有序的对象组,每个对象采用一个 象字典中的参数对通信加以配置[10]。16位的索引值来寻址,为了允许访问数据结构中的单
表 3 1800h号对象字典 ( TPDO1通信参数 ) Table 3 Object dictionary( TPDO1 parameters)
索引子索引数据类型描述读写类型缺省值
1800h( TPDO1通信参数 ) 00h-子索引个数只读
5 1800h( TPDO1通信参数 ) 01h无符号 32位 TPDO1的 COB-ID读/写 180h + Node-ID 1800h( TPDO1通信参数 ) 02h无符号 8位传输类型读/写 255 1800h( TPDO1通信参数 ) 03h-保留-1800h( TPDO1通信参数 ) 04h-保留-1800h( TPDO1通信参数 ) 05h无符号 16位时间定时器读/写 0
5. 3数字伺服电机对象字典的操作过程举例公司 CycloneⅢ系列 EP3C80F484C8型 FPGA中建立,编
如图 5所示,本研究搭建了一个基于 CANopen协程环境为 Quartus Ⅱ,采用 VHDL语言。CAN控制器采议的数字伺服电机控制平台,应用层在型号为 Altera用 MCP2510,CAN收发器采用 MCP2551。
[自控 ·检测]韩江,等基于 CANopen协议的数字伺服电机通信主站研究·71·
图 5系统实物图 Figure 5 Experiment platform of the systems
程序中建立了发送与接收的数据缓冲区,并在其相应的逻辑状态利用循环语句对数据进行传输操作, FPGA与 CAN控制器之间的数据交换是通过 SPI接口实现的。截取代码如下 :
…
TX _ Buffer: OUT STD _ LOGIC _ VECTOR ( 63 DOWNTO 0); --定义发送缓冲区
RX _ Buffer: IN STD _ LOGIC _ VECTOR ( 63
DOWNTO 0); --定义接收缓冲区
…
L1: FORI IN0 TO63 LOOP–循环,将发送缓冲区中的数据在 CLK上升沿发送出去 IF CLK’EVENT ANG CLK = 1 THENSI< = TX_Buffer( I); END IF;
END LOOP[L1];
…
图 6为截取的一段 Modesim仿真图,对应程序为上位机访问数字伺服中索引号为 1800h的对象字典, CLK时钟周期为 40 ns。
图 6读对象字典波形仿真 Figure 6 Simulation of Reading object dictionary
6结语
利用 CANopen高层协议实现了 CANopen主站与数字伺服之间的数据通信,为多轴、高速数控系统数据传输提出了一种解决方案,改变了传统的脉冲控制模式,改用数字伺服系统,对多轴多通道数控机床的研究具有重要的意义。