基于DSP和CAN的电机同步控制系统与通信
扫描二维码
随时随地手机看文章
0 引言
传统的多电机控制系统适用于要求不高、相对简单、电机分布比较集中的场合。而对于运动控制中实时性、可靠性、可扩展性、传输距离、传输速度等要求较高的场合,需要采用高传输速度、远传输距离、可靠性较高的通信方式和处理速度快、功能强大、能够实现复杂控制策略的处理器。
控制器局域网CAN(Controller Area Network)是一种有效支持分布式控制和实时控制的串行通信网络。它属于现场总线范畴,与现有的其它总线相比,它是一种分散式、数字化、双向、多站点的通信系统,具有速率高、可靠性好、智能化高、连接方便等诸多优点,在分布式测试和工业控制等相关领域的应用越来越广泛[1]。
数字信号处理器(Digital Signal Processor,DSP)是一种高速专用微处理器,TMS320F2407A运算功能强大,能实现高速输入和高速率传输数据,且带CAN总线接口。它专门处理以运算为主且不允许延迟的实时信号,可高效进行快速傅里叶变换运算。数字信号处理器的精度高,可靠性好,其先进的品质与性能可为电机控制提供高效可靠的平台[2]。
鉴于CAN总线的通信优势和DSP的强大处理能力,利用二者完全可以设计完成要求较高的多电机控制网络系统。这种功能强大、智能化和网络化程度较高的网络系统满足了工艺复杂、要求较高的多电机控制,它正在兴起并成为多电机控制网络系统的发展趋势[3]。
1 系统结构及其实现
基于CAN总线网络的新型多电机同步控制系统,采用总线式多主多从网络拓扑结构。当系统中不仅有工程师层还包括管理层即多个主节点时,主主通信将实现不同功能主节点的交流(如图1)。整个控制系统由三部分组成:CAN总线、上级PC机、DSP控制系统。系统采用PC 机作为监控主机,实现对各节点的监控和管理;CAN 总线接口卡完成CAN协议的物理层和数据链路层功能,实现PC 机与CAN 总线之间的通信;各从节点通过DSP完成数据的收发和对交流电机的控制[4]。
主节点采用PC微机(或其他兼容机),通过PCI总线双路智能CAN网卡(通信适配器)与CAN总线相连,进行信息交换。CAN网卡电路共分为三大部分:由DS89C420微处理机、74LS373锁存器、32KB的RAM 62256、32KB的EPROM 27256组成的主机部分;双口RAMIDT7005S35PF及其控制电路;由SJA1000、光电隔离电路、82C250组成的CAN控制器和CAN总线接口电路。
从节点由两部分构成:电机控制板和功率驱动板。从节点的基本框图如图2所示。电机控制板以TMS320LF2407A为核心,外围采用各功能模块。其中,PWM模块用于驱动功率器件,A/D模块用来把系统所需要的电流模拟量变换成数字量,实现电流环反馈控制。磁场平衡式霍尔电流传感器(LEM模块)把互感器、磁放大器、霍尔元件和电子线路集成在一起,具有测量、反馈、保护三种功能,LEM模块的输出输入到DSP的三路A/D转换口,转换成数字信号后,再进行相应的处理。光电码盘把检测信息反馈到DSP的正交编码脉冲电路(QEP),实现速度环反馈控制。当LF2407A的QEP被使能(禁止捕获功能),定时器2对引脚CAP1/QEP1和CAP2/QEP2、定时器4对引脚CAP4/QEP3和CAP5/QEP4上的脉冲数目和频率分别计数,可得到电机的角位移和转速。功率驱动板由整流滤波、IGBT驱动、以及IGBT桥和反馈电路组成[5]。
2 软件设计
2.1 CAN 总线网络通信协议设计
CAN 总线采用一种串行数据通信协议,它能有效地支持具有较高安全等级的分布实时控制。根据CAN总线技术规范CAN2.0A、CAN2.0B,本文设计了用户通信协议,各个节点都按此协议传送信息。用户通信协议的帧结构共10个字节(2个字节标识符、8个字节数据和变量),其定义如图3所示。
PRI:1为低优先级,0为高优先级,而剩余的优先级由源地址决定,低地址优先级高。
帧类型:100为单帧广播;000为单帧点对点。
命令或物理变量名:cmd0、cmd1的功能定义有很多,表1仅给出了几种典型的定义。节点根据接收到的数据中两个字节的内容来确定被传送的内容。
物理变量序号:0~255。
Data3~Data0:定义为一个物理变量数据,4字节长整数,原码表示。数据类型为整型、布尔型或浮点型。
2.3软件实现
本系统程序主要分为三部分:PC机人机交互程序、DS89C420作为CAN与PC机之间通信中介的程序、DSP作为CAN网络节点和电机控制功能的程序。PC机人机交互软件它以可视化界面显示CAN网络上各节点ID、控制命令、发送优先级等。DS89C420的作用是将从CAN网络上采集的数据传送到PC机,并把PC机传过来得数据发送到CAN网络上,它实现的功能类似于协议转换。DSP完成的功能包括:根据PC机发送过来的指令控制电机正转、反转和停止,以及将电机的相电流、运行速度等信息分别通过LF2407A的片上A/D转换器、正交脉冲编码电路等得到;对电机的控制通过LF2407A的事件管理器模块EVA、EVB输出具有适当占空比的PWM脉冲给大功率IGBT管来实现。
2.3.1主主通信
本设计为基于CAN总线的多主多从通信网络系统,主节点可以是工程师站,也可以是副工程师站或其它操作站,由于控制的需要,主节点之间需要传送一些数据。主—主通信的软件设计关键是掌握好CAN控制器的初始化设置例如ID的设置,数据的发送和接收。由于网卡具有接口函数库及网卡的驱动程序,可以方便地进行主—主通信。通信软件已测试成功,通信界面采用VC编写,如图4所示。
2.3.2主从通信
下面的程序是DSP平台和上位机的通信,主节点CAN网卡中的CAN模块初始化和发送子程序。调试过程中需要注意:通信节点的波特率要求一致;主从通信时要求CANMCR = 0x0480,使通信处于正常发送状态;CANH与CANL之间连接终端负载电阻抗干扰。
void CANInit()
{ asm(" SETC INTM "); /* 禁止中断 */
IMR = IMR | 0x011; //使能CAN中断
CANIMR = 0; //屏蔽所有中断
CANIFR = 0xFFFF; //清除已挂号中断
CANMCR = 0x0480; //CAN处于正常工作状态
CANMCR = CANMCR | 0x1000; //设置CCR,改变配置请求;
While ( (CANGSR & 0x0010) == 0 ){} //设置CCE,更改配置启用;
CANBCR2 = 0x027; //设置波特率50Kbps
CANBCR1 = 0x005E;
CANMCR = CANMCR & 0xEFFF; //清除CCR位;
While ( (CANGSR & 0x0010) == 1 ){} //清除CCE,禁止对配置寄存器进行操作;
CANMailBoxInit(); //初始化邮箱
asm(" CLRC INTM "); /* 开中断 */
CANTCR =0x0080; //发送5号邮箱内容;
While ( (CANTCR & 0x8000) == 0 ){} //发送成功 }
3 同步措施及实现
在对多电机的同步控制中,解决电机的实时性问题十分重要。CAN总线具有点对点、一点对多点及全局广播传送数据的功能。虽然CAN总线的信息存取利用了广播式的存取工作方式,信息可以在任何时候由任何节点发送到空闲的总线上,然后根据信息标文符决定是否读取信息包中的数据以判断是否使用这一信息,但是由于各电机的实际情况不同,即使命令同时传送到节点,实际命令的实施时间也不能得到保证。笔者认为仅依靠CAN总线的广播数据功能实现同步控制会产生误差,可以通过软件编程实现误差较小的同步控制。采用两次命令的方式,首先由主站给需要同步的从站用广播的方式发送准备命令和同步速度,主站确认收到准备好命令之后发送第二次具体的命令即启动同步命令。这样可以使误差相对减少。
4 结束语
本文研究了基于CAN总线的多电机同步控制网络的组成和通信实现,设计有效的将DSP的高速处理能力和CAN(Controller Area Network)总线的高性能、高可靠性结合起来,具有很高的使用价值和广阔的应用前景。以上代码全部调试通过,实验证明适用于多台电机串行通信的实际应用以及可以根据实际的系统进行扩展和移植。
本文作者创新点:电机同步控制措施的提出。