在插件机控制系统软件程序设计中,为测试运动控制卡控制工作台运动的精度,选择深圳雷塞公司的配套控制设配,针对 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 轴方向往复运动实验结果如下表所示:
脉冲数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
5000 | 0.006 | 0.007 | 0.006 | 0.008 | 0.007 | 0.008 | 0.009 | 0.009 | 0.009 |
10000 | 0.009 | 0.009 | 0.011 | 0.011 | 0.011 | 0.011 | 0.011 | 0.011 | 0.012 |
15000 | 0.01 | 0.006 | 0.009 | 0.008 | 0.008 | 0.011 | 0.009 | 0.011 | 0.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.006 | 0.009 | -0.01 | -0.011 | -0.01 | -0.012 | -0.009 |
注:上表测量结果单位为毫米。测量结果为每次往复运动终点位置相对起点位置的差值,若正数表示终点位置超出起点位置,负数表示终点位置未超出起点位置。
由上述实验结果可知:插件机采用运动控制卡发出脉冲数控制工作台位置精度可达到 ± 0.01 毫米。完全满足插件机设计的要求。