|
|
//加减速运动
if(startv[0]<=Speed[0])
{
//后面的参数1值意为手动减速,因为只能用手动减速
g_CtrlCard.Set_DecMode(1,0,1);
g_CtrlCard.Set_DecPos(1,Pos[0],startv[0],Speed[0],Add[0]);
}
//插补减速禁止响应函数
g_CtrlCard.ForbidDec(no);
//------------第一段----------------------
g_CtrlCard.Interp_Move2(1,Pos[0],Pos[1]);
while(true)
{
DoEvent();
g_CtrlCard.Get_ErrorInf(1,status1);
if(status1!=0 || g_WorkStatus==0)
goto err;
//status2: 0:不允许写入 1:允许写入
g_CtrlCard.Get_AllowInpStatus(no,status2);
if(status2!=0)break;
}
//------------第二段----------------------
g_CtrlCard.Interp_Move2(1,Pos[0],Pos[1]);
while(true)
{
DoEvent();
g_CtrlCard.Get_ErrorInf(1,status1);
if(status1!=0 || g_WorkStatus==0)
goto err;
//status2: 0:不允许写入 1:允许写入
g_CtrlCard.Get_AllowInpStatus(no,status2);
if(status2!=0)
break;
}
//------------第三段----------------------
g_CtrlCard.Interp_Move2(1,Pos[0],Pos[1]);
while(true)
{
DoEvent();
g_CtrlCard.Get_ErrorInf(1,status1);
if(status1!=0 || g_WorkStatus==0)goto err;
g_CtrlCard.Get_AllowInpStatus(no,status2);
if(status2!=0)break;
}
//------------最后一段----------------------
g_CtrlCard.AllowDec(no);//插补减速允许响应函数
g_CtrlCard.Interp_Move2(1,Pos[0],Pos[1]);
while(true)
{
DoEvent();
g_CtrlCard.Get_ErrorInf(1,status1);
if(status1!=0 || g_WorkStatus==0) //g_WorkStatus为停止的时候就报错
goto err;
g_CtrlCard.Get_Status(no,status2,1);
if(status2==0)break;
}
g_WorkStatus=0;
return;
err:
MessageBox("错误!");
return;
} |
|