基于FPGA的柔性机械臂多路无刷直流电机控制系统设计*

2020-06-02 03:42吴鹏飞祖凤丹陈景元李昃雯宛俊伟
飞控与探测 2020年2期
关键词:直流电机神经元柔性

吴鹏飞,祖凤丹,陈景元,李昃雯,宛俊伟

(上海航天控制技术研究所·上海·201109)

0 引 言

无刷直流电机(Brushless DC Motor,BLDCM)具有结构简单、长寿命、效率高、低噪声的优势[1],广泛应用于机械臂的关节驱动,工业中的刚性机械臂通常拥有3~6个自由度,驱动电机通常设置于关节处,这导致刚性机械臂比较笨重,自由度较少和灵活性差。

柔性机械臂凭借其特殊的柔性结构和超冗余自由度的特点,使得它在狭小的作业空间中游刃有余,本文研究的钢丝绳索驱动的柔性机械臂各关节共由16个无刷直流电机驱动,具备狭小空间灵巧运动的功能,可应用于航空航天、国防安全、抢险救援等狭小领域作业[2]。16个无刷直流电机设置于柔性机械臂的底部驱动箱中,从而减小了各个关节的质量。传统的电机控制通常采用数字信号处理(Digital Signal Processing,DSP)芯片,文献[3]中提出采用DSP作为无刷直流电机控制器,虽然DSP能快速运行较为复杂的电机控制算法,但DSP外围电路较为复杂,并且用户接口数量少,单个DSP芯片无法保证16个无刷直流电机高精度、协调运动。文献[4-5]提出采用多个DSP芯片进行协同控制电机运动,这种方法虽然可以弥补DSP用户接口数量不足的缺陷,但是多个DSP势必导致外围电路更加复杂,并且不同的DSP控制柔性机械臂不同关节的电机,各个电机的同步精度较低,设计程序时还要兼顾其它DSP的控制,增加了软件设计的难度。可编程逻辑门阵列(Field Programmable Gate Array,FPGA)具有现场可编程、并行处理的优势,并且具有几百个I/O引脚可供用户分配,一片FPGA芯片可以同时控制多路电机,提高了绳驱柔性机械臂各路电机的同步性。采用传统的PID算法控制精度低、抗柔性负载扰动能力差,导致各路电机的位置跟踪精度下降,文献[6]提出了改进差分进化算法优化的PI控制器用于无刷电机的控制,这种算法是一种自适应全局优化算法,改进的PI控制器具有收敛速度快、鲁棒性更好的优点,这种改进算法也存在一定的缺陷,随着进化代数的增加,会使得种群的多样性变小,从而过早收敛到局部极小点。文献[7-15]提出了许多其它改进PID控制器的办法,比如自适应PID控制、滑模控制、神经元PID控制,这些控制方式确实能提高PID控制器的参数自适应能力和抗扰动能力,在卫星飞轮、压电驱动平台、机器人控制器中得到了验证。文献[12]中采用神经元PID控制器用于解决PID参数调节困难的问题,取得了较好的仿真效果。神经元PID控制算法具有结构简单、抗非线性负载扰动能力强的特点,非常适合在并行处理速度极快的FPGA芯片中运行,因此本文采用一片FPGA芯片作为16路无刷直流电机的主控芯片,使用改进后的有监督Hebb学习算法设计单神经元自适应PID控制器,在线调节PID参数,并且完成了位置插补算法、16路电流信号采集处理、16路旋变位置信号采集处理等功能,程序设计采用自顶向下的设计方法,各个功能进行模块化设计,便于程序的修改。

1 系统工作原理

本文的柔性机械臂多路无刷直流电机控制系统框图如图1所示。

图1 无刷直流电机控制系统框图

整个控制系统采用FPGA芯片、电机驱动芯片MSK4300、AD芯片、旋变解码芯片AD2S80、16个无刷直流电机组成,如图1所示,位置环、速度环和电流环控制器均在FPGA中实现,其中,三环控制器采用改进型神经元自适应PID控制器。

位置环作为三环控制的最外环,控制周期为5 ms,速度环控制周期为1 ms,电流环追求响应速度,同时要兼顾电流采集芯片AD574的采集速度,电流环控制周期最短,为500 μs。数字PID控制器的功能就是根据电机控制模块中的控制参数和给定值与反馈值的偏差完成闭环计算的过程,并将计算结果给到速度闭环控制模块。使用旋变获取电机的位置,运动过程中不会丢步,保证了位置控制精度。速度环和电流环的设计与位置环的设计方法一致。

传统的PID算法存在积分饱和现象,即系统存在一个方向的偏差,积分不断累加增大到很大的值,一旦出现反向偏差,积分很难在短时间内消除,从而产生超调现象[3]。为了解决此问题,本文对位置环、速度环和电流环均进行了限幅,具体实现方法是对积分项进行限幅,当积分项超过一定值时,积分项便不再累加,从而解决了传统PID超调大的问题。同时本文中没有使用乘法器,而是靠移位实现乘法运算,这很大地节省了FPGA的资源,提高了运算速度。

电机驱动控制器FPGA功能框图与对外接口如图2所示。

图2 FPGA功能框图与对外接口

2 系统方案及控制器设计

2.1 神经元自适应PID控制器设计

为了克服PID算法的抗柔性负载扰动能力差、位置跟踪精度差的缺陷,运用有监督的Hebb学习算法设计出单神经元自适应PID控制器。

单神经元PID调节器的结构比较简单,由于PID算法的位置式公式为

(1)

将式(1)中的u(k)减去u(k-1)可以得出PID的增量式算法:

Δu(k)=Kp[e(k)-e(k-1)]+Kie(k)+

Kd[e(k)-2e(k-1)+e(k-2)]

(2)

考虑到有监督的Hebb学习规则更有利于学习结果不停地逼近期望结果,容易实时控制,因此采用有监督的Hebb学习规则更新权值。根据式(2)的形式,单神经元控制器中,输入层可以设为5个输入,分别是e(k)、e(k-1)、e(k-2)、u(k-1)、u(k),其中,e(k)为给定和反馈的误差值;输出层为u(k);权值为w1(k)、w2(k)、w3(k)。控制器的输出为

(3)

x1(k)=e(k)

(4)

x2(k)=e(k)-e(k-1)

(5)

x3(k)=e(k)-2e(k-1)+e(k-2)

(6)

对式(3)进行改进,在传统的有监督的Hebb学习规则中引入实际经验,即将xi(k)=e(k)改为xi(k)=e(k)+Δe(k),其中Δe(k)=e(k)-e(k-1)。

在设计单神经元自适应PID控制器时,需要注意学习规则的选取、神经元比例系数的选取、学习率的选取等。

2.2 电流采集方案

整个电流采集设计流程为:收到采样起始信号后打开计数器使能,并设置模拟多路选通使得每个模拟多路选通开关都选择1通道。计时40 μs至模拟多路选择完成,启动AD574模块进行采样,进入内层状态机读取4个AD芯片的电流数据。采样完一轮(4个)电机电流后,多路开关切换到第2通道,继续等待40 μs至多路开关稳定,再进行第二轮电机电流的采集,总共进行4轮电机电流的采集,从而完成16路电机电流的采集,FPGA程序设计流程如图3所示。

图3 16路无刷直流电机电流采集流程图

2.3 旋变位置信号采集方案

旋变位置信号由AD2S80解码芯片解码得到,16路无刷直流电机的位置数据可以采用轮询的方式读取到FPGA中,因为位置环周期是5 ms,16路旋变轮询一次的周期是9.6 μs,足以满足位置环的计算。这种方案可以有效减少总线隔离芯片的使用,并且16路旋变解码芯片可以复用相同的数据引脚,从而极大地减少FPGA的I/O引脚使用。

旋变角度采集模块主要用于16路无刷直流电机位置角度的采集和处理,用于16路无刷直流电机的换向控制和电机位置和速度闭环控制,根据AD2S80的采样时序,设计FPGA程序。

旋变采集模块软件设计流程图如图4所示。

图4 旋变采集流程图

2.4 运动插补方案

运动插补主要应用于数控机床和机器人运动控制中,插补方式有直线插补、圆弧插补、样条线插补等,在本文中,考虑到FPGA的逻辑资源有限,选择使用较为简单的直线插补算法。

运动插补模块主要目的是为了让电机运动更加柔顺,在柔性机械臂运动控制中,CPU负责运动规划算法,每100 ms给电机控制FPGA发送一个位置规划指令,FPGA负责各个关节无刷直流电机的三环(位置环、速度环和电流环)控制,假设没有使用运动插补模块,由于位置环的控制周期为5 ms,因此每次CPU发送一个位置规划指令,位置环接收到后,由于该位置规划值较大,因此电机达到速度限幅值以最大速度运转,电机以最大速度运行一定的时间后到达期望位置(规划位置),此时电机会停下来,电机实际运行的时间可能只用了几十毫秒(假设30 ms)就运行到了期望位置处,那么剩下的时间里(70 ms),电机是处于不运动的状态。

如果使用运动插补模块,将100 ms时发送的位置分成20个位置点,FPGA每间隔5 ms发送一个位置点给位置环,这样一来,就可以有效避免电机提前运动到CPU发送的期望位置处。FPGA进行运动插补时,CPU控制周期为100 ms,位置环计算周期为5 ms,因此,首先需要设计一个5 ms计数器子模块,FPGA每次接收CPU发送的位置规划指令后产生一个触发信号,触发5 ms计数器进行计数。为了进行位置细分,需要设计一个除法器子模块,为了节省FPGA逻辑资源,采用移位减法的方式进行除法器设计,被除数为位置细分模块产生的位置增量,除数为细分数20,计算得到商和余数,输出给位置细分模块。设计一个位置细分子模块,当接收到新的位置指令后,将新位置减去上一个控制周期接收到的位置,即计算出100 ms的位置增量,该位置增量作为输出量给到除法器模块,细分时,如果除法器模块存在除不尽的情况,那么该位置细分子模块需要将余数均分到细分后的位置。

举例说明,如果第100 ms时,CPU发来一个规划位置指令为100,第200 ms时,发送第二个规划位置指令为203,位置细分接收到该指令后,将这两个位置进行作差得到103,作为被除数传给除法器模块,除以20后得到的商为5,余数为3,该计算结果传给位置细分模块,每间隔5 ms产生一个细分后的位置指令给位置环模块,即:5,5,5,5,5,5,5,5,5,6,6,6,5,5,5,5,5,5,5,5。

图5 插补模块RTL原理图

3 仿真验证

搭建改进型Hebb神经元自适应PID控制器Simulink仿真模型,该控制器采用S函数的形式完成。

仿真条件参数设置如下:所选BLDC电机极对数pn=4,定子电感Ld=Lq=30mH,定子电阻r=7 Ω,电机转矩常数fm=0.12256(Nm/A),转动惯量1.39×10-6(kg·m2)。

输入正弦信号y=5.41sin(2πt/250),运动期间引入外部干扰,对比经典PID控制和改进型Hebb神经元自适应PID控制器的控制效果,仿真结果如下:

图6 神经元PID控制器

图7 经典PID控制的位置追踪和速度追踪情况

图8 经典PID控制的位置与速度跟踪误差情况

图9 改进型Hebb神经元自适应PID控制器的位置追踪和转速追踪情况

图10 改进型Hebb神经元自适应PID控制器的跟踪误差情况

从图7~图10看出,采用神经元自适应PID控制器的跟踪精度更高,相比于传统的PID控制,位置误差缩小了50%,引入扰动时,转速波动大幅降低,抗扰动能力明显提升。

4 实验验证

为了验证控制方案的正确性和系统的性能,搭建柔性机械臂实验平台,整个柔性机械臂分为驱动箱和臂两大部分,臂由关节、臂杆、钢丝绳索组成,驱动箱包含了16个无刷直流电机和驱动控制器,主控芯片采用一片ALCTEL的FPGA。实验中选用的无刷直流电机额定电压为31 V,其它参数选取和上一节仿真时设置的一致。

测试各路电机运行效果,通过CPU发送阶跃位置规划指令给电机控制FPGA,上位机实时绘制各路电机位置、误差、电流、转速曲线。

图11.部分电机速度曲线

图12 部分电机位置曲线

图13 部分电机电流曲线

从图11~图13的实测结果可以看出,速度波动较小,电机运行平稳,各路电机同步性较好,稳态位置误差为25码值,转换为角度误差为0.137°。

5 结 论

本文提出的基于FPGA实现的多路无刷直流电机控制方案可以适应柔性机械臂的驱动,每个关节的无刷直流电机运动同步性、协调性良好,力矩输出平滑,可以确保柔性机械臂运动过程的柔顺性,实验验证了本文设计的驱动控制器能确保在0~0.35(Nm)不同负载下,各个关节的电机定位精度优于0.2°。

猜你喜欢
直流电机神经元柔性
柔性接口铸铁排水管在建筑排水工程中的应用
二维有限长度柔性壁面上T-S波演化的数值研究
基于模糊自适应ADRC的无刷直流电机控制技术
AI讲座:神经网络的空间对应
基于24V直流电机调速的应用
仿生芯片可再现生物神经元行为
基于霍尔位置信号的无刷直流电机直接转矩控制
这个神经元负责改变我们的习惯
研究人员精确定位控制饮酒的神经元
柔性管理在企业经济管理中的作用