基于DSP 控制的10 路伺服电机系统设计
2020-08-26化雪荟
化雪荟
(佛山职业技术学院,广东佛山 528000)
0 引言
国内外自动测试系统在军事领域中有广泛的应用,但是在民用方面上相对应用较少,自动检测系统在工业上应用非常广泛,对工业产品的开发、检测、工艺的改进都有极大的促进作用。在民用自动测试系统模块主要有ADC采样、伺服电机驱动相关参数的测量、光电隔离继电器输出控制接口、视频检测等模块。本文主要集中讨论多路伺服电机的控制模块的开发和应用,在理论研究的基础上,采用DSP控制芯片实现了10路松下A6交流伺服电机控制,给出了控制系统结构图,部分电路原理图和软件部分的控制策略,最后完成控制系统的设计,并在某企业的智能窗帘导轨与机头寿命测试系统中应用,证实了该控制系统的有效性[1-4]。
1 系统总体设计
10路伺服电机系统采用测速环、位置环、转矩环三环控制,其中位置环的给出信号为测速环给入信号,测速环给出信号为转矩环给入信号,系统控制图如图1 所示。系统采用鲁棒PID控制对外部干扰进行补偿,提高动态性能,消除波动,同时消除电机定位时出现的振荡现象[5-6]。
图1 控制系统图
1.1 硬件设计模块
10路伺服电机控制系统包括主控芯片、USB 模块、总线模块、伺服驱动、PWM 输出、DAC 模块、ADC 模块、电源模块等内容。
(1)DSP控制模块
DSP芯片采用的TMS320F28379D是32 位浮点微控制器单元,芯片为新型双核架构,每个内核频率为200 MHz,Flash存储1 MB,有4个模数转换器(ADC),可控制24 个外部通道,8个数模转换器(DAC);增强型控制外设,24 条PWM通道,6个eCAP 模块,3 个eQEP 模块;并有标准SDFM 数据滤波器;通信采用USB2.0模式。DSP控制系统图如图2所示。
(2)IO总线扩展模块
TCA6424是低压24位I2C和带中断输出复位和配置寄存器的SMbus I/O扩展器。ADG3308是一款双向电平转换器,内置8个双向通道,器件的内部结构允许执行双向电平转换,可用于多电压数字系统。在本系统中主要作用是DSP控制器与高压器件之间的数据传输。IO总线扩展原理图如图3所示。
1.2 伺服电机
伺服电机(servo motor)是一种应用于运动控制系统种的控制电机,它的输出参数为位置、速度、加速度或转矩等。伺服电机可使控制速度、位置精度非常准确,可以将电压信号转化为转矩和转速以驱动控制对象。伺服电机转子转速受输入信号控制,并能快速反应,在自动控制系统中,用作执行元件,且具有机电时间常数小、线性度高、始动电压等特性,可把所收到的电信号转换成电动机轴上的角位移或角速度输出。伺服电机现在基本上分无刷直流和交流伺服两种,本文伺服电机型采用松下A6MBDLT25SF型号,这个型号电机的驱动波形是无刷直流电机,是梯形波,无刷直流电机也可以叫永磁无刷同步电机。输入电压200 ~240 V,功率0.4 kW,最大电流值20 A,频率250 Hz,最大通信16 000次/s,转速3 000 r/min,转矩1.27 N,驱动器速度响应性3.2 kHz,电机绝对编码器精度23 bit(8/Mp/r),通信周期最快为0.062 5 ms,具有高精度位置比较和无限运转绝对式功能[7-8]。松下A6 伺服电机机械特性曲线如图4所示。
图2 DSP控制系统图
图3 IO总线扩展原理图
图4 松下A6 伺服电机机械特性曲线
2 软件设计
多核DSP下位机启动后首先进行DSP多核初始化,然后进行盘内资源(如定时器、PWM、CAP 等功能模块)初始化。驱动网络模块,初始化扩展功能模块(电机控制、功率检测、ADC采样等)。然后进行授权控制并进入系统任务对各项应用进行调度[9-11]。数据发送需要经过数据封装、数据加密、然后发送出去。数据接收需要进行数据解密,数据解析,然后根据解析的内容进行相应的控制或功能。
软件根据上位机发来的指令(数据解析得到)进行多核处理,实现高速高效的实时控制,如图5所示。
图5 软件设计流程
部分程序如下:
void Widget::setDcDataSlot ()
{
int i,j;
int dval;
int index;
int vmin,vmax;
/ / 数据滤波
index = 0;
if(usb.dcCnt < 3)
{
/ / 均值滤波
if (usb.dcCnt)
{
for (i =0;i < 14;i+ = usb.dcCnt)
{
dval = 0;
for (j =0;j < usb.dcCnt;j++ )
{
dval + = usb.dcBuf [j][i];
}
usb.dcResBuf[index]= (((double)
(dval))/usb.dcCnt)*3*dcScaleDef
[index]/4096;
index++;
}
usb.rxSize = index;
}
}
else
{
/ / 去毛刺+均值滤波
for (i =0;i < 14;i++)
{
dval = usb.dcBuf [0][i];
vmin = usb.dcBuf [0][i];
vmax = usb.dcBuf [0][i];
for (j =1;j < usb.dcCnt;j++ )
{
if (vmin > usb.dcBuf [j][i])
vmin = usb.dcBuf [j][i];
if (vmax < usb.dcBuf [j][i])
vmax = usb.dcBuf [j][i];
dval + = usb.dcBuf [j][i];
}
usb.dcResBuf[i]= (((double)(dval-vmin
-vmax))/(usb.dcCnt-2))*3*dcScaleDef
[i]/4096;
}
}
this- >test.dcFlag = 1;
}
3 通信协议制定
由于数据传输量大,USB 通信采用BULK 模式,网络通信采用UDP传输,这些通信模式都是无校验的通信。为了保证数据传输过程中的可靠性以及正确性,通过数据传输协议来进行数据的传输以及校验。
(1)通讯模式
USB通讯采用标准协议USB2.0,通讯模式采用BULK模式以方便大量数据传输。网络传输采用TCP/IP 以太网协议,数据通讯采用UDP传输以方便大量数据快速传输。
(2)数据传输协议
由于上位机和下位机传输的数据具有不同的用途,为了区分数据的具体用途和控制数据的可靠传输,制定数据传输协议[12-13]。
报文格式:报文头+报文内容+校验和;报文头:数据收发的第1 ~6字节,固定格式和长度。格式如下:
【Command】+ 【status】+ 【packageCnt】+ 【size】
【Command】为指令码,数据第1 字节,指定数据用途;【Status】为状态,数据第2 字节,标记当前数据传输状态,用于控制传输以及数据校验和应答,接收端根据此状态进行控制数据的重发、判断数据是否传输完成等操作;【packageCnt】为数据包计数,数据第3 ~4 字节,传输大数据时用于数据索引,应用程序可以根据此索引按顺序还原数据;【size】为数据长度,数据第5 ~6字节,不包含前6 字节和最后字节的数据长度。
报文内容:【Content】为报文内容,数据第7 ~63(网络传输7 ~1455)字节,二进制编码数据。
校验和:【checksum】,报文内容【Content】最后一个字节的下一个字节,数据传输的校验和,用于校验数据传输是否正确。
报文封装如下:
【Command】 + 【status】 + 【packageCnt】 + 【size】 +【Content】+ 【checksum】
报文传输长度:6 +size+1。
(3)数据加密解密
考虑到数据的安全问题,主控器(PC 上位机)与实时测控器(多核DSP下位机)的数据传输采用密文形式传输。需要传输的数据,经过加密算法进行加密,之后将加密的数据进行封装发送。当接收到数据时,经过解密算法进行解密,然后进行数据解析,根据解析的内容进行相应的操作。
(4)数据封装和解析
数据封装:经过加密的数据,通过数据封装将数据转换成数据传输协议的报文格式进行发送。数据解析:经过解密的接受数据,通过数据解析进行数据管理,根据解析内容实现各种操作和功能。
(5)系统授权
为了控制系统软件的版权问题以及控制系统使用时间,采用授权文件的方式进行授权管理。授权文件通过3 层授权算法生成,实现系统软件授权管理。第一层授权算法,采集PC电脑CPU、硬盘、主板的序列号,采集DSP 芯片的UID以及挂接的各模块的ID以及控制时间等信息进行数据变换生成第一层密文。第二层授权算法,将第一层密文进行随机分布算法打乱,然后进行第二层数据变换形成第二层密文。第三层授权算法,将第二层密文进行MD5转换,转换后的数据再次进行随机分布算法打乱,生成第三层密文并生成授权文件。
4 结束语
图6 已产业化的某款智能窗帘机头寿命测试系统参数设置
本系统作为全自动检测装置的前期阶段,实现了稳定的控制10路伺服电机,并对控制系统进行了模块化设计,后期会继续开发视频检测等功能模块。如图6 所示,目前该系统已经应用于某企业开发的智能窗帘导轨与机头寿命测试中,能动态呈现导轨和窗帘机头的工作过程,信息显示区实时显示产品运行时间、运行次数、机头开合次数、测试时间内异常次数等数据,并智能统计异常点电机的电压、电流、功率、功率因数、距离、速度等参数,为工作人员进行故障分析提供数据。