一种数字伺服驱动的多元电机控制系统设计
2013-09-10王广龙陈建辉乔中涛
董 宇 王广龙 陈建辉 乔中涛
(军械工程学院导弹工程系,河北 石家庄 050003)
0 引言
伺服系统也称随动系统,属于自动控制系统中的一种。伺服控制技术应用广泛,其不仅能完成转动控制、直线运动控制,而且能依靠多套伺服系统的配合完成复杂的空间曲线运动的控制[1-2]。
早期的伺服驱动器多属于模拟伺服,处理器运算速度的增长为数字伺服驱动器的出现奠定了基础。具有数字输入与输出接口的数字伺服驱动器具有体积小、质量轻等特点。采用数字伺服驱动器进行编程,仅需设计上层软件就能实现复杂功能,体现出极大的优越性[3-4]。目前,国内大多数电机控制系统采用嵌入式系统进行设计,成本相对较低,但运算能力较弱,无法实现多元(自由度)大运算量计算及复杂算法[5-6]。
本控制系统采用高性能的工控机作为核心控制模块,并基于Linux操作系统进行控制软件的开发,软件编程更灵活,鲁棒性更好,控制算法优化易于实现,系统性能得到大大改善。
1 控制系统硬件结构
本控制系统包括核心控制、USBcan和伺服驱动三个模块,如图1所示。其中核心控制模块包括工控机及其外部I/O设备;USBcan模块的核心部分为USBcan转换器;伺服驱动模块包括数字伺服驱动器和执行电机。
图1 系统硬件结构Fig.1 Hardware structure of the system
1.1 核心控制模块
核心控制模块以工控机PCM9362D为核心。PCM9362D工控机采用+12 V电源供电,功耗只有10 W左右,其集成了USB、CF存储器接口等外部接口,具有很高的集成度。该工控机支持Windows、Linux等多种操作系统,系统可安装在CF卡中,无需硬盘的支持,这有效提高了系统的可靠性和稳定性。PCM9362D工控机采用的双核Intel微功耗处理器,能有效保证其高速运算的能力,可运行复杂的控制算法,为控制系统软件开发提供了高性能的硬件平台。
1.2 USBcan 模块
USBcan模块采用Kvaser公司的USBcan Professional转换器,实现USB到双端口CAN的数据接口和数据交换。该模块可通过USB中的电源供电,无需外加电源;支持Linux下的驱动模块自动加载,可同时支持CAN2.0A、CAN2.0B协议。其工作过程为:内部处理器接收核心控制模块发送的控制指令,并将接收到的数据根据CAN协议封装打包,经CAN总线发送给伺服驱动模块,以驱动执行电机;同时接收来自电机的反馈信息,并上传给核心控制模块。
USBcan模块的驱动程序中包含通道设置、波特率设置、初始化、数据读写等多个API函数,可在应用程序中直接调用,为软件开发提供了方便,提高了软件的可移植性。该模块通过CAN接口可扩展多路CAN总线终端设备,为编程控制多元执行电机创造了条件。
1.3 伺服驱动模块
伺服驱动模块的核心部分为Elmo公司的WHI系列数字伺服驱动器,其结构如图2所示。WHI伺服驱动器同时支持CAN总线及RS-232通信接口,可在角度、位置、速度和力矩控制多模式之间任意切换。该伺服驱动器的微处理器具有内置的驱动程序,能执行内置的脚本;可以根据电机状态自动调整伺服电机的工作参数;根据控制指令运行相应的操作,直到核心控制模块发送改变其运行状态的指令。
图2 数字伺服驱动器结构图Fig.2 Structure of the digital servo driver
2 控制系统算法设计
WHI数字伺服驱动器中封装了SP(速度设置)、MP[N](运动参数设置)、LD(程序加载)等完整的硬件控制命令。在优化底层硬件驱动程序的基础上,本系统的软件设计着重于上层控制系统软件的实现,其中控制算法的设计是上层控制系统设计的关键部分。
2.1 变速积分PID控制算法
PID控制是一种线性控制方法,其在连续时间域中的表达式如下[7]:
式中:Kp、Ti、Td分别为模拟控制器的比例增益、积分时间和微分时间常数;e(t)为控制偏差;u0为系统稳态工作时的控制器输出,即偏差e=0时的输出。
对式(1)进行离散化处理之后,得到PID控制器的数字算法如式(2)所示:
式中:u(k)为采样时刻t=kT时的计算机输出;Ki为积分常数;Kd为微分系数[8-9]。
系统对积分项的要求是:系统偏差大时,积分作用减弱以至全无;而在小偏差时则应加强。因此,引入变速积分PID控制算法。其基本思想为:设法改变积分项的累加速度,使其与偏差大小相对应,偏差越大,积分越慢,反之则越快。为此,设置系数f[e(k)],它是e(k)的函数。当|e(k)|增大时,f减小,反之增大,则得到变速积分PID积分项表达式如下:
将式(3)代入式(2),最终得到变速积分PID算法的完整形式,即:
变速积分PID控制算法可以完全消除积分饱和现象,大大减少了超调量,从而使得系统更加稳定[10]。另外,本系统在设计时对PID输出设置了上下限幅值,避免了因输出过大造成的系统不稳定,进一步增强了系统的鲁棒性。
2.2 电机速度控制算法
本控制系统所采用的数字伺服驱动器提供了对电机加速度和最大速度等参数的编程控制,其内部的控制机制能保证其在频繁启停、频率发生突变的高速运转过程中不会发生堵转和失步现象。
在控制软件中,需要保证通过软件设置的速度值与电机实际转速保持一致[11],这就需要设计速度控制算法进行速度控制。电机速度控制算法流程如图3所示。
图3 速度控制算法流程图Fig.3 Flowchart of the speed control algorithm
2.3 电机角度控制算法
在数字伺服驱动器中,对电机转动位置的设定是采用设定下一运动将到达的相对位置的方式进行的,这使得对电机的转动控制不够直观明了。因此,在上层软件中,将电机下一运动将到达的相对位置换算成电机将转动的角度值,其换算关系为:
式中:Pr为电机下一运动将到达的相对位置;Pa为电机转动的角度值;Gr为齿轮齿数比;Ec为编码器转数。在软件控制时,只需设置角度值Pa即可使电机转过相应角度。
3 控制系统软件实现
控制系统软件采用Linux Ubuntu10.04+Kedit程序编辑器作为其开发环境,根据面向对象思想进行编程,以命令行的方式运行。在系统软件运行前需首先加载硬件驱动程序,然后通过CAN总线控制器使能CAN总线。在初始化电机和WHI伺服驱动器之后,即可驱动多元电机运行。
3.1 硬件驱动程序加载
在进行系统软件编程之前,首先需要保证硬件正常工作。Linux系统本身对一些使用较为普遍的硬件提供了相应的驱动程序,本部分的主要工作为驱动USBcan转换器。
USBcan转换器针对Linux系统定制了驱动程序,可通过 make、make install命令编译、安装,但由于Ubuntu对Linux内核做了修改,在对USB设备进行识别时,导致驱动程序无法加载,因此需要修改USBcan驱动中的ProductID。驱动程序安装完成后,即可启动加载驱动程序。
3.2 CAN 总线控制
本系统采用单独的子程序对CAN总线控制器进行操作,其程序流程如图4所示。
图4 CAN总线控制流程图Fig.4 Control flowchart of CAN bus
首先,调用canInitializeLibrary()方法初始化CAN总线控制器驱动程序;然后读取当前处于活动状态的CAN通道号。对应每一个处于活动状态的CAN通道都对应一个句柄handle,该值若小于0,则说明打开失败,进入错误处理程序;否则开启操作人员选择的CAN通道。使用canSetBusParams()方法设置好CAN通道的相关参数,即可打开CAN总线进行读写操作[12]。
3.3 伺服驱动器/电机初始化
本文在初始化数字伺服驱动器时,首先通过InitialDriverMode()方法设置数字伺服驱动器的采样时间,并设置驱动电机的相关运动参数,如位置参考点、位置控制器的采样次数以及定时数据等。然后调用FillInMotionBuffer()方法清空数字伺服驱动器的数据存储器,这其中包括用于存储时间、位置、速度阵列的QTⅠ、QPⅠ、QVⅠ数组。最后调用 ResetDriverWithData()方法启动归位进程,重置数字伺服驱动器的位置寄存器。
对电机的初始化操作主要是为电机的相关数据赋初值,包括对各个电机所对应的CAN节点号的设置、各个电机的齿轮齿数比和编码器转数的设置等。
3.4 驱动多元电机
对于多元电机的控制,本文采用循环控制的方法,其流程如图5所示。所有电机既可以根据程序预先设定好的自动运行模式运动,也可以通过人工输入运动控制参数的方式运动。
目前,本控制系统实现的自动运行模式包括两种方式,即按默认速度连续运动和按预先设定好的时间、速度、位置阵列运动。程序中对电机的控制方式包括旋转角度控制、转速控制、运动模式切换等。在电机运动的过程中,采用变速积分PID控制算法实时检测运动误差并进行误差补偿[13-16]。
图5 多元电机控制流程图Fig.5 Flowchart of the multi-motor control
4 控制系统数据分析
根据数字伺服驱动器的要求,输入20组角度值,通过对数字伺服驱动器的PX指令加载,得到电机的实际转动角度反馈数据如表1所示。根据表1绘制得到的数据分析曲线如图6所示。
表1 角度测试试验数据Tab.1 Experimental data of angle test
图6 数据分析曲线Fig.6 Curve of data analysis
由表1可见,单个电机的控制误差不超过1°。由图6可以看出,该曲线具有良好的线性度,控制系统运转稳定。
5 结束语
本文设计并实现了一种基于数字伺服驱动器的多元电机控制系统。该系统采用面向对象的思想编程,具有良好的人机交互性,相关控制算法的设计使得本系统的电机控制高效稳定。经试验验证,系统鲁棒性较好、可靠性较高、灵敏度高、误差小,CAN总线可挂接多个总线设备。本控制系统可用于机器人、数控机床等多种应用环境,具有较高的实用价值和良好的扩展性。
[1]黄会生,樊利民.基于Elmo数字伺服控制器的机载吊舱陀螺稳定平台设计[J].电子设计工程,2010,10(18):64 -66.
[2] Yang Wenlei,Jang Tingbiao.Hardware design of digital AC servo system based on DSP2812[C]//2010 International Conference on Intelligent Computing and Integrated Systems,2010:337 -340.
[3]林青松,姚玉菲,王军晓.新型伺服控制系统的建模仿真与分析[J].电子技术应用,2010,36(12):135 -140.
[4] Chen Nanhu,Li Zexiang.A sensorless speed control strategy for a lowcost full-closed-loop servo driver system[C]//7th World Congress on Intelligent Control and Automation,2008:5616 -5621.
[5]吴红星,钱海荣,刘莹,等.永磁直线同步电机控制技术综述[J].微电机,2011,44(7):76 -80.
[6]高梅,王忠庆.基于DSP的交流伺服电机控制系统的研究[J].机械工程与自动化,2009(5):149-150.
[7]于晓敏,于晓坤,耿蕊.PID控制器参数优化算法的仿真研究[J].计算机仿真,2011,28(7):212 -215.
[8]王秀君,胡协和.一种改进的单神经元PID控制策略[J].浙江大学学报,2011,45(8):1498 -1501.
[9]黄友锐,曲立国.PID控制器参数整定与实现[M].北京:科学出版社,2010:10-12.
[10]卢志刚,吴杰.数字伺服控制系统与设计[M].北京:机械工业出版社,2007:312-315.
[11]Boussak M.Implementation and experimental investigation of sensorless speed control with initial rotor position estimation for interior PM synchronous motor drive[J].IEEE Transactions on Power Electronics,2005,20(6):1413 -1422.
[12]刘宇,张义民.CAN总线数据传输可靠性分析[J].机械科学与技术,2011,30(6):888 -891.
[13]王维平,张磊,李同华.基于DSP无轴承永磁同步电机控制系统设计[J].电力电子技术,2011,45(6):55 -57.
[14]阮见.多功能智能移动机器人控制系统设计与分析[D].南京:南京理工大学,2008.
[15]钟新华,蔡自兴,邹小兵.移动机器人运动控制系统设计及控制算法研究[J].华中科技大学学报:自然科学版,2004(s1).
[16]邱寄帆,王海春,唐斌,等.通用智能机器人分布式控制系统的设计与实现[J].电子技术应用,2006(8):71-73.