插件机控制系统软件程序设计

插件机控制系统软件程序设计

在插件机控制系统软件程序设计中,为测试运动控制卡控制工作台运动的精度,选择深圳雷塞公司的配套控制设配,针对 X-Y 工作台单个方向(X 方向)的运动控制精度及插件机工作台实际运动规律,设计工作台的动作流程,由于插件机被插件为 PCB 板,其特点是PCB 板上二极管插孔为等间距矩阵排列,根据插件时工作台 X 轴和 Y 轴移动等间距的位移量,规定一个固定位移量 Δ ,工作台在 X 方向往复移动一个 Δ 后回到起点,然后 Δ 自加,继续往复运动一次。依次循环。每次完成往复运动,由千分表测量工作台每往返一次后的位置与起点的差值。由此来测定工作台运动精度。

程序运行前输入位移量信息,单击启动,运动控制卡控制工作台往复移动事先输入的位移量,弹出对话框显示位移量和往复次数。单击确定,位移量自加,将其作为新的位移量完成数据更新,工作台往复移动更新的位移量。依次循环,控制工作台的运动。单击停止,程序运行结束。程序流程图如下图所示。

程序流程图
程序流程图

初始化卡及卡脉冲输出模式设定

在对话框初始化函数 OnInitDialog()中添加下列代码:

BOOL CDDDlg::OnInitDialog() 
{ 
   int n=0; 
   n=d5200_board_init(); 
if(0==n) 
{ 
MessageBox("没有发现 DMC5200!"); 
} 
else 
{ 
MessageBox("发现 DMC5200!"); 
} 
d5200_set_pulse_outmode(0,1); 
return TRUE;   // return TRUE   unless you set the focus to a control 
} 

上述程序调用了 DMC5200 初始化函数 d5200_board_init(),为 DMC5200控制卡分配系统资源,并初始化控制卡。当返回值为 0 时,弹出消息提示框,显示“没有发现DMC5200!”;当返回值为非0则消息提示框显示“发现DMC520 ”。并调用DMC5200 控制卡脉冲输出模式设置函数 : d5200_set_ pulse_outmode(0,1);即 0 号轴(X 轴)选择 000 型,out 端输出脉冲数,DIR端输出高低电平控制方向。

设置参数及控制电机运动

在建立的基于对话框的工程上添加控件,并添加相应控件,并布置各控件的位置。如下图:

软件控制界面
软件控制界面

在“运行”按钮对应的消息映射函数 OnButton1()添加代码如下:

void CDDDlg::OnButton1()  
{ 
// TODO: Add your control notification handler code her 
int i,n1=0,n2=0; 
CString str; 
long add; 
UpdateData(TRUE); 
for (i=1;i<=4;i++) 
{ 
add=m_add*i; 
d5200_t_pmove(0,add,0,500,5000,0.1); 
n1=d5200_get_position(0); 
  d5200_t_pmove(0,-1*add,0,500,5000,0.1); 
n2=d5200_get_position(0); 
str.Format("i=%d,n1=%d,n2=%d",i,n1,n2); 
MessageBox(str); 
} 
} 

上述程序采用 for 循环语句共执行四次,输入递增量信息的关联变量是m_add,每循环一次,递增量 add 增大一倍。函数 d5200_t_pmove(0,add,0, 500,5000,0.1)为位移控制函数(对称的 T 形加减速),参数依次表示:轴号(0号轴),位移值(变量 add),位移方式(相对位移),起步速度(500 脉冲/秒),运行速度(5000 脉冲/秒),加速时间(0.1 秒)。本实验使用千分表测量工作台单轴移动一定距离回到起始点的精度,所以速度和加速时间可以根据需要设定,不影响实验结果。函数 d5200_get_position(0)为读取位置函数,指定轴为 0 轴,返回值为脉冲位置值。循环控制流程如下图所示。

循环运动控制流程
循环运动控制流程

程序结束

程序运行结束后,按“停止”按钮结束程序,在该按钮对应的消息响应函数 OnButton2()添加代码如下:

void CDDDlg::OnButton2()  
{ 
// TODO: Add your control notification handler code here 
d5200_board_close(); 
MessageBox("关闭 DMC5200!"); 
} 

上述程序函数 d5200_board_close()作用是关闭控制卡,释放控制卡占有的系统资源。

实验数据

为了检测插件机运动控制卡的运动控制精度,按照上述程序设计的流程,启动运动控制卡,输入参数信息,控制一工作台上 X 方向滑块往复运动。将千分表固定在工作台起始位置并调零,千分表轴线应与丝杠的轴线平行。滑块每完成以此往复运动,读取千分表上读数并记录,千分表读完数后调零,进行下次循环。程序设定位移控制的初始速度 500 脉冲/秒,运行速度 5000 脉冲/秒,加速时间0.01 秒。工作台沿 X 轴方向往复运动实验结果如下表所示:

脉冲数123456789
50000.0060.0070.0060.0080.0070.0080.0090.0090.009
100000.0090.0090.0110.0110.0110.0110.0110.0110.012
150000.010.0060.0090.0080.0080.0110.0090.0110.01
10000-0.008-0.009-0.009-0.01-0.007-0.007-0.008-0.009-0.007
5000-0.009-0.007-0.0060.009-0.01-0.011-0.01-0.012-0.009
工作台往复运动实验结果

注:上表测量结果单位为毫米。测量结果为每次往复运动终点位置相对起点位置的差值,若正数表示终点位置超出起点位置,负数表示终点位置未超出起点位置。

由上述实验结果可知:插件机采用运动控制卡发出脉冲数控制工作台位置精度可达到 ± 0.01 毫米。完全满足插件机设计的要求。

发表评论