基于板卡的两轴运动控制系统 下载本文

内容发布更新时间 : 2024/12/22 21:27:27星期一 下面是文章的全部内容请认真阅读。

基于板卡的两轴运动控制系统 1.概述

两轴运动控制系统在许多自动化设备中都有应用,如X-Y台控制,医疗器械(如X光机)等。常用的上位控制单元有自开发单片机系统、具有运动控制功能的专用PLC(如松下FP0)等。本文介绍一种更具开放性、控制更灵活的上位控制单元——运动控制卡。

两轴运动控制系统的执行电机多采用步进电机或全数字式伺服电机。MPC01运动控制卡是步进机电公司开发的基于PC机ISA总线的步进或数字式伺服电机的上位控制单元。它与PC机构成主从式控制结构:PC机负责人机交互界面的管理和控制系统的实时监控等工作;MPC01卡完成运动控制的细节(包括脉冲和方向信号的输出、自动升降速处理、原点和限位等信号的检测等)。

下图为一个简单的两轴运动控制系统控制电路接线图:

2.两轴运动系统的基本运动型式及实现方法 1.独立运动

所谓独立运动指各轴的运动之间没有联动关系,可以是单轴运动,也可以是两轴同时按各自的速度运动。点位运动、连续运动都属于独立运动。 (1)点位运动函数

点位运动是指被控轴以各自的速度分别移动指定的距离,在到达目标位置时自动停止。在MPC01函数库中共提供了六个点位运动指令函数: int con_pmove(int ch,long step);/*一个轴以常速做点位运动*/ int fast_pmove(int ch,long step);/*一个轴以快速做点位运动*/ int con_pmove2(int ch1,long step1,int ch2,long step2);/*两轴以常速做点位运动*/ int fast_pmove2(int ch1,long step1,int ch2,long step2);/*两轴以快速做点位运动*/ (2)连续运动函数

连续运动是指被控轴以各自的速度按给定的方向一直运动,直到碰到限位开关或调用制动函数才会停止。在MPC01函数库中共提供了六个连续运动指令函数: int con_vmove(int ch,int dir);/*一轴以常速做连续运动*/ int fast_vmove(int ch,int dir);/*一轴以快速连续运动*/ int con_vmove2(int ch1,int dir1,int ch2,int dir2);/*两轴以常速连续运动*/ int fast_vmove2(int ch1,int dir1,int ch2,int dir2);/*两轴以快速连续运动*/ (3)回原点函数

回原点运动是指被控轴以各自的速度按给定的方向一直运动,直到碰到原点信号限位开关或调用制动函数才会停止。在MPC01函数库中共提供了六个回原点运动指令函数: int con_hmove(int ch,int dir);/*以常速返回原点*/ int fast_hmove(int ch,int dir);/*以快速返回原点*/ int con_hmove2(int ch1,int dir1,int ch2,int dir2);/*两轴以常速各自返回原点*/ int fast_hmove2(int ch1,int dir1,int ch2,int dir2);/*两轴以快速各自返回原点*/ 2.插补运动

插补运动是指两轴按照一定的算法进行联动,被控轴同时启动,并同时到达目标位置。插补运动以矢量速度运行,矢量速度分为常矢量速度和梯形矢量速度。与插补运动有关的函数有:

(1)线性插补函数

线性插补运动是指两个轴以矢量速度(常矢量速度或梯形矢量速度)作线性联动,每个被控轴的运动速度为矢量速度在该轴上的分速度,各个被控轴同时启动,并同时到达目标位置。MPC01函数库中提供四个线性插补函数:

int con_line2(int ch1,long pos1,int ch2,long pos2); /*两轴做平面直线运动*/

int fast_line2(int ch1,long pos1,int ch2,long pos3); /*两轴做快速直线运动*/ (2)园弧插补函数

圆弧插补运动是指两个轴以矢量速度(常矢量速度或梯形矢量速度)沿给定圆弧作联动,每个被控轴的运动速度为矢量速度在该轴上的分速度,由于矢量速度的方向在不断改变,各被控轴的运动分速度也在不断改变。各个被控轴同时启动,并同时到达目标位置,并且两个轴的合成运动轨迹为给定的圆弧。MPC01函数库中提供四个圆弧类插补函数: int arc_certer(int ch1,int ch2,long cen1,long cen2,float angle); /*两轴以常矢量速度做园弧插补运动*/

int fast_arc_center(int ch1,int ch2,long cen1,long cen2,float angle); /*两轴以梯形矢量速度做园弧插补运动*/

int arc_final(int ch1,int ch2,int dir,long fx,long fy,long radius); /*以常矢量速度沿园弧运动到指定位置*/

int helical_move(int CHX,int CHY,int CHZ,long cen1,long cen2,float angle,long pitch); /*在CHX、CHY作圆弧插补运动的同时,CHZ轴作直线运动*/ 3.结束语