一种基于控制卡和RS422接口电缆的电机控制系统

赵志坤1,伍春2,黄玉清1,张岩2,余恒松2

(1.西南科技大学信息工程学院,四川绵阳621000;2.西南科技大学国防科技学院,四川绵阳621000)

:用MicrosoftVisualC++6.0编辑界面程序,设计一种基于绝对位置的电机控制系统。设置驱动器、运动控制卡中的参数,调用运动控制卡中的库函数,使用脉冲串加符号控制伺服电机的转速与转向。使用RS422接口电缆配合控制卡保证断电又上电后伺服电机的原点回归。

:伺服电机;运动控制卡;RS422

:TP273+.5文献标识码:ADOI:10.19358/

引用格式:赵志坤,伍春,黄玉清,等.一种基于控制卡和RS422接口电缆的电机控制系统[J].微型机与应用,2017,36(5):18-20.

0引言

1运动控制卡的介绍

PCI-1245L是4轴的SoftMotionPCI总线控制器卡,专为各种电机自动化广泛应用设计。板卡配有高性能FPGA,其中包括SoftMotion算法,能够实现运动轨迹和时间控制,以满足精确运动中的同步应用需求。PCI-1245L支持以下SoftMotion特性:手轮及MPG控制、可编程的加速度和减速度,TS形速度曲线及2轴线性插补和同步起停等功能。所有研华运动控制器均采用CommonMotionAPI架构,采用统一的用户编程接口。程序员无需大规模修改应用码即可集成任何研华SoftMotion运动控制器[2]。

2系统硬件组成及平台搭建

将自制的RS-422串行通信电缆连接安装有UT713PCI的转换卡的工控机422接口与伺服驱动器的RJ45接口。伺服放大器使用三菱公司的J3系列产品,伺服电机选用中等功率的HFSP152型号电机,J3系列伺服电机采用了分辨率为262144脉冲/转的绝对位置编码器,可以进行高精度的位置控制,伺服放大器只需安装电池就可以构成绝对位置检测系统从而实现精确定位。伺服放大器在主电路电源侧接线为三相220V交流电。接地时要将伺服电机的保护接地(PE)接至伺服放大器的保护接地(PE)端子上,再将伺服放大器的地线经过控制柜的保护地端子接地,控制电路电源L和主电路电源同时接通或比主电路电源先接通。伺服放大器在主电路电源接通约1~2s后便可接收伺服开启信号(SON),约20ms后准备完毕信号(RD)将变为ON,伺服放大器处于可运行状态。伺服放大器是通过控制功率晶体管的通断来给电机供电。根据接线方式和地线的布线方法的不同,有时可能会受到伺服放大器晶体管的通断产生的噪声的影响。EMC滤波器可有效防止这种情况的发生并可降低高频谐波的辐射干扰。

伺服驱动器与伺服电机通过电机编码器电缆线和动力线实现连接[3]。编码器电缆线连接伺服驱动器的CN2接口,电机动力线一端为伺服驱动器接口,另一端为电机电源插头(MRPWCNS4)。伺服驱动器编码器电缆线和动力线直接与伺服电机连接,伺服驱动器输入输出接口用DC24V±10%、300mA电源供电并由外部提供。伺服驱动器输入输出信号线通过中转板ADAM3955实现与运动控制卡连接及电源供电,运行时,紧急停止信号(EMG),正转/反转行程末端(LSP/LSN)必须为ON。伺服开启与关闭、运动停止、异常报警等都有具体指示灯显示[4]。伺服电机及放大器外围设备具体连接框图如图1所示。


3系统的软件介绍

基于PC+运动控制卡数控系统满足标准化、柔性化与开放性的要求,使得它的开发和使用备受青睐。使用VC++6.0MFC应用程序,利用研华PCI1245L运动控制卡开发,实现伺服电机正反转、原点复位功能、分度操作、指令操作等功能[5]。其控制系统流程图如图2所示。


(1)打开串口,并进行数据处理

if(m_==2)

{variant_inp=m_;//读缓冲区

safearray_inp=variant_inp;

len=safearray_;

if((rxdata[0]==2)(rxdata[1]==48))

{for(k=0;klen;k++)

{safearray_(k,rxdata+k);

(rxdata[k]);

unsignedcharbt=*(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]);

("%.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结论



参考文献

[1]姜荣.一种基于运动控制卡的伺服电机控制系统[J].机电产品开发与创新,2006,19(3):113-114.

[2]研华股份有限公司.PCI-1245L运动控制卡使用手册[Z].2012.

[3]陈宇晓.电容式微机械静电伺服加速度计系统分析[D].成都:电子科技大学,2003.

[4]三菱电机.三菱MRJ3驱动器使用手册[Z].2014.

[5]孙鑫.VC++深入详解[M].北京:电子工业出版,2012.

免责声明:本文章如果文章侵权,请联系我们处理,本站仅提供信息存储空间服务如因作品内容、版权和其他问题请于本站联系