赵志坤1,伍春2,黄玉清1,张岩2,余恒松2
(1. 西南科技大学 信息工程学院,四川 绵阳 621000;2.西南科技大学 国防科技学院,四川 绵阳 621000)
摘要:用Microsoft Visual C++ 6.0编辑界面程序,设计一种基于绝对位置的电机控制系统。设置驱动器、运动控制卡中的参数,调用运动控制卡中的库函数,使用脉冲串加符号控制伺服电机的转速与转向。使用RS422接口电缆配合控制卡保证断电又上电后伺服电机的原点回归。
关键词:伺服电机;运动控制卡;RS422
中图分类号:TP273+.5文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.05.006
引用格式:赵志坤,伍春,黄玉清,等.一种基于控制卡和RS422接口电缆的电机控制系统[J].微型机与应用,2017,36(5):18-20.
0引言
*基金项目:中国兵器工业集团项目随着工控机的普及,以运动控制卡为核心的伺服电机控制系统使用得越来越多,也必将成为伺服运动控制系统的主要发展趋势[1]。运动控制卡的主要作用是控制驱动器而不是直接的电机, 一般有脉冲和模拟量两种控制方式。脉冲控制即为驱动器工作在位置环,脉冲的多少代表运动的长度,频率表示速度;模拟量控制是驱动器工作在速度环或者电流环,模拟量的大小对应电机的编码器反馈的速度与位置。目前国内通常采用运动控制卡的回零方式,通常要辅助近接开关或伺服电机的Z相信号,并未对绝对位置伺服系统断电记忆功能进行很好的利用。本文采用研华PCI1245L运动控制卡利用三菱J3伺服放大器和RS422串行通信功能实现伺服系统运行、停止、断电后上电高精度回归原点等功能。
1运动控制卡的介绍
PCI-1245L 是 4 轴的 SoftMotion PCI 总线控制器卡,专为各种电机自动化广泛应用设计。板卡配有高性能 FPGA,其中包括 SoftMotion 算法,能够实现运动轨迹和时间控制,以满足精确运动中的同步应用需求。PCI-1245L 支持以下 SoftMotion 特性:手轮及 MPG 控制、可编程的加速度和减速度,T&S 形速度曲线及 2 轴线性插补和同步起停等功能。所有研华运动控制器均采用 Common Motion API 架构,采用统一的用户编程接口。程序员无需大规模修改应用码即可集成任何研华 SoftMotion 运动控制器[2]。
2系统硬件组成及平台搭建
将自制的RS-422串行通信电缆连接安装有UT713PCI的转换卡的工控机422接口与伺服驱动器的RJ45接口。伺服放大器使用三菱公司的J3系列产品,伺服电机选用中等功率的HFSP152型号电机,J3系列伺服电机采用了分辨率为262 144脉冲/转的绝对位置编码器,可以进行高精度的位置控制,伺服放大器只需安装电池就可以构成绝对位置检测系统从而实现精确定位。伺服放大器在主电路电源侧接线为三相220 V交流电。接地时要将伺服电机的保护接地(PE)接至伺服放大器的保护接地(PE)端子上,再将伺服放大器的地线经过控制柜的保护地端子接地,控制电路电源L和主电路电源同时接通或比主电路电源先接通。伺服放大器在主电路电源接通约1~2 s后便可接收伺服开启信号(SON),约20 ms后准备完毕信号(RD)将变为ON,伺服放大器处于可运行状态。伺服放大器是通过控制功率晶体管的通断来给电机供电。根据接线方式和地线的布线方法的不同,有时可能会受到伺服放大器晶体管的通断产生的噪声的影响。EMC滤波器可有效防止这种情况的发生并可降低高频谐波的辐射干扰。
伺服驱动器与伺服电机通过电机编码器电缆线和动力线实现连接[3]。编码器电缆线连接伺服驱动器的CN2接口,电机动力线一端为伺服驱动器接口,另一端为电机电源插头(MRPWCNS4)。伺服驱动器编码器电缆线和动力线直接与伺服电机连接,伺服驱动器输入输出接口用DC24 V±10% 、300 mA电源供电并由外部提供。伺服驱动器输入输出信号线通过中转板ADAM3955实现与运动控制卡连接及电源供电,运行时,紧急停止信号(EMG),正转/反转行程末端 (LSP/LSN)必须为ON。伺服开启与关闭、运动停止、异常报警等都有具体指示灯显示[4]。伺服电机及放大器外围设备具体连接框图如图1所示。
3系统的软件介绍
基于PC+运动控制卡数控系统满足标准化、柔性化与开放性的要求,使得它的开发和使用备受青睐。使用VC++6. 0 MFC应用程序,利用研华PCI1245L运动控制卡开发,实现伺服电机正反转、原点复位功能、分度操作、指令操作等功能[5]。其控制系统流程图如图2所示。
(1)打开串口,并进行数据处理
if (m_com.GetCommEvent() == 2)
{variant_inp = m_com.GetInput();//读缓冲区
safearray_inp = variant_inp;
len = safearray_inp.GetOneDimSize();
if ( (rxdata[0] == 2) && (rxdata[1] == 48))
{for (k=0; k<len; k++)
{ safearray_inp.GetElement(&k,rxdata+k);
rxArray.Add(rxdata[k]);
unsigned char bt=*(char*)(rxdata+k);
if (rxdata[k]<58)
rxdata[k]=(rxdata[k]-48);
else
rxdata[k]=(rxdata[k]-55);}
plus=(rxdata[3]*pow(16,7)+rxdata[4]*pow(16,6)+rxdata[5]*pow(16,5)+rxdata[6]*pow(16,4)+rxdata[7]*pow(16,3)+rxdata[8]*pow(16,2)+rxdata[9]*pow(16,1)+rxdata[10]*pow(16,0)); }//获取断电后上电返回信息
(2)打开板卡,获取轴号,伺服开
Acm_DevOpen(m_dwDevNum,&m_Devhand); buffLen=sizeof(AxisPerDev);
Acm_GetProperty(m_Devhand,FT_DevAxesCount,&AxisPerDev,&buffLen);//获取板卡号
AxisNumber=AxisPerDev;
buffLen=sizeof(slaveDevs);
ZeroMemory(slaveDevs,sizeof(slaveDevs));
Acm_GetProperty(m_Devhand,CFG_DevSlaveDevs,slaveDevs,&buffLen);//获取轴号,支持4轴
Acm_AxOpen(m_Devhand,(USHORT)AxisNumber, &m_Axishand[AxisNumber]);//打开指定轴
Acm_AxSetSvOn(m_Axishand[AxisNum],0);
(3)参数设置及运动示例
Acm_SetU32Property(m_Axishand[AxisNumber],CFG_AxPulseOutMode,1);//设置脉冲输出方式
Acm_SetU32Property(m_Devhand,CFG_DevEmgLogic,1); //设置急停电平
Acm_AxMoveRel(m_Axishand[m_CurAxis],1000); Acm_AxGetActualPosition(m_Axishand[m_CurAxis],&CurPos[m_CurAxis]);
strTemp.Format("%.2f",CurPos[m_CurAxis]/1000);
(4)意外断电上电后原点复位
Acm_AxSetCmdPosition(m_Axishand[m_CurAxis],Position);
Acm_AxMoveAbs(m_Axishand[m_CurAxis], -plus);
Acm_AxSetActualPosition(m_Axishand[m_CurAxis],0);//电机回归电气原点后运动控制卡脉冲置零
4结论
利用伺服放大器串行通信功能和运动控制卡实现伺服系统运行、停止,断电后上电所得到反馈位置信息与伺服测试控制平台软件上的信息一致,当打开伺服测试控制平台软件后会自动检查电机是否在原点位置,若通过RS422电缆与驱动器通信返回信息确认电机不在绝对位置零点,将弹出如图3所示的执行回归原点提示,原点回归后的实际运行界面如图4所示,可观察到返回的电机位置信息已处于零点。
此外,使用三菱公司提供的串口调试软件也可进行辅助实验,利用 MR Configurator串口通信软件反馈的绝对位置信息也与伺服测试控制平台软件一致,MR Configurator串口通信软件原点回归后界面如图5所示,电机以1∶90的总减速比带动直径210 mm的分度盘时多次原点回归实验反馈接收到的命令脉冲均为0。分度盘转动一度将反馈65 320个绝对位置脉冲数,执行原点回归时绝对位置反馈脉冲数为13个,即重复误差精度经换算为0.7″,多次执行原点回归运动反馈绝对位置脉冲数,经换算重复误差精度均小于4″。所以以运动控制卡和RS422通信电缆为核心的伺服控制系统具备很好的高精度定位、断电记忆功能。
参考文献
[1] 姜荣.一种基于运动控制卡的伺服电机控制系统[J].机电产品开发与创新,2006,19(3):113-114.
[2] 研华股份有限公司.PCI-1245L 运动控制卡使用手册[Z].2012.
[3] 陈宇晓.电容式微机械静电伺服加速度计系统分析[D].成都:电子科技大学,2003.
[4] 三菱电机.三菱MRJ3驱动器使用手册[Z].2014.
[5] 孙鑫.VC++深入详解[M]. 北京:电子工业出版,2012.