📄 processg71.c
字号:
for (i=1;i<MAXNUMBER;i++){
if (CircleValue[i].Pos==(AllNum-1)){
CircleValue[CircleShapNum].StartX=CircleValue[i].EndX;
CircleValue[CircleShapNum].StartZ=CircleValue[i].EndZ;
break;
}
if (LineValue[i].Pos==(AllNum-1)){
CircleValue[CircleShapNum].StartX=LineValue[i].EndX;
CircleValue[CircleShapNum].StartZ=LineValue[i].EndZ;
break;
}
}
}
else{
DispErrCode(22);
return FALSE;
}
if(bX_Code) G71_Abs_PosX=G71_Pos_X;
else if(bU_Code) G71_Abs_PosX=G71_Pos_U+CircleValue[CircleShapNum].StartX;
else G71_Abs_PosX=CircleValue[CircleShapNum].StartX;
if(bZ_Code) G71_Abs_PosZ=G71_Pos_Z;
else if(bW_Code) G71_Abs_PosZ=G71_Pos_W+CircleValue[CircleShapNum].StartZ;
else G71_Abs_PosZ=CircleValue[CircleShapNum].StartZ;
if(bR_Code){
if(G71_Pos_R==0){DispErrCode(25);return FALSE;}
if(iG_Code==3)G71_Pos_R=-G71_Pos_R;
if(GetCircleCenter(G71_Abs_PosX-CircleValue[CircleShapNum].StartX,G71_Abs_PosZ-CircleValue[CircleShapNum].StartZ,G71_Pos_R,&G71_Abs_PosI,&G71_Abs_PosK)){DispErrCode(29);return FALSE;}
G71_Abs_PosI+=CircleValue[CircleShapNum].StartX;
G71_Abs_PosK+=CircleValue[CircleShapNum].StartZ;
}
else
{
if(bI_Code) G71_Abs_PosI=G71_Pos_I+CircleValue[CircleShapNum].StartX;
else G71_Abs_PosI=CircleValue[CircleShapNum].StartX;
if(bK_Code) G71_Abs_PosK=G71_Pos_K+CircleValue[CircleShapNum].StartZ;
else G71_Abs_PosK=CircleValue[CircleShapNum].StartZ;
}
CircleValue[CircleShapNum].EndX=G71_Abs_PosX;
CircleValue[CircleShapNum].EndZ=G71_Abs_PosZ;
CircleValue[CircleShapNum].I=G71_Abs_PosI;
CircleValue[CircleShapNum].K=G71_Abs_PosK;
CircleValue[CircleShapNum].R=G71_Pos_R;
CircleValue[CircleShapNum].Pos=AllNum;
CircleValue[CircleShapNum].Cw=iG_Code;
if (CircleValue[CircleShapNum].EndZ>CircleValue[CircleShapNum].StartZ)Zinc=1;
else if(CircleValue[CircleShapNum].EndZ<CircleValue[CircleShapNum].StartZ)Zdec=1;
if (Zdec==1&&Zinc==1){DispErrCode(24);return FALSE;}
if (CircleValue[CircleShapNum].EndX>CircleValue[CircleShapNum].StartX)Xinc=1;
else if(CircleValue[CircleShapNum].EndX<CircleValue[CircleShapNum].StartX)Xdec=1;
if (Xdec==1&&Xinc==1){DispErrCode(24);return FALSE;}
break;
default:
DispErrCode(37);return FALSE;
break;
}
}
return TRUE;
}
FP32 G71ConstructionFunc1(FP32 Xpos)//解释
{
INT8U i,Num;
BOOLEAN b_Line;
BOOLEAN b_Circle;
b_Circle=0;b_Line=0;
for (i=1;i<=AllNum;i++)
{
if(Xpos<=LineValue[i].EndX && Xpos>=LineValue[i].StartX)
{
Num=i;b_Line=TRUE;break;
}
if(Xpos<=CircleValue[i].EndX && Xpos>=CircleValue[i].StartX)
{
Num=i;b_Circle=TRUE;break;
}
}
if(b_Line)
{
if(LineValue[Num].K==0) return LineValue[Num].EndZ;
return (Xpos-LineValue[Num].StartX)*LineValue[Num].K+LineValue[Num].StartZ;
}
if(b_Circle)
{
if(!bit && CircleValue[Num].Cw==3)
return -sqrt(CircleValue[Num].R*CircleValue[Num].R-(Xpos-CircleValue[Num].I)*(Xpos-CircleValue[Num].I))+CircleValue[Num].K;
if(!bit && CircleValue[Num].Cw==2)
return sqrt(CircleValue[Num].R*CircleValue[Num].R-(Xpos-CircleValue[Num].I)*(Xpos-CircleValue[Num].I))+CircleValue[Num].K;
if(bit && CircleValue[Num].Cw==3)
return -sqrt(CircleValue[Num].R*CircleValue[Num].R-(Xpos-CircleValue[Num].I)*(Xpos-CircleValue[Num].I))+CircleValue[Num].K;
if(bit && CircleValue[Num].Cw==2)
return sqrt(CircleValue[Num].R*CircleValue[Num].R-(Xpos-CircleValue[Num].I)*(Xpos-CircleValue[Num].I))+CircleValue[Num].K;
}
DispErrCode(38);//"运动中计算错误,系统溢出"
return 0; //add by zxj at 2006.10.23
}
FP32 G71ConstructionFunc(FP32 Xpos)//解释
{
INT8U i,Num;
BOOLEAN b_Line;
BOOLEAN b_Circle;
b_Circle=0;b_Line=0;
if(inner==TRUE)
{
for (i=1;i<=AllNum;i++)
{
if(Xpos<=LineValue[i].EndX && Xpos>=LineValue[i].StartX )
{
Num=i;b_Line=TRUE;break;
}
if(Xpos<=CircleValue[i].EndX && Xpos>=CircleValue[i].StartX)
{
Num=i;b_Circle=TRUE;break;
}
}
}
else if(inner==FALSE)
{
for (i=AllNum;i>=1;i--)
{
if(Xpos<=LineValue[i].StartX && Xpos>=LineValue[i].EndX )
{
Num=i;b_Line=TRUE;break;
}
if(Xpos<=CircleValue[i].StartX && Xpos>=CircleValue[i].EndX )
{
Num=i;b_Circle=TRUE;break;
}
}
}
if(b_Line)
{
if(LineValue[Num].K==0) return LineValue[Num].EndZ;
return (Xpos-LineValue[Num].StartX)*LineValue[Num].K+LineValue[Num].StartZ;//垂直高度*斜率=水平距离
if(inner==FALSE)
{
return LineValue[Num].EndZ-(LineValue[Num].StartX-Xpos)/LineValue[Num].K;
}
}
if(b_Circle)
{
if(!bit && CircleValue[Num].Cw==3)
return -sqrt(CircleValue[Num].R*CircleValue[Num].R-(Xpos-CircleValue[Num].I)*(Xpos-CircleValue[Num].I))+CircleValue[Num].K;
if(!bit && CircleValue[Num].Cw==2)
return sqrt(CircleValue[Num].R*CircleValue[Num].R-(Xpos-CircleValue[Num].I)*(Xpos-CircleValue[Num].I))+CircleValue[Num].K;
if(bit && CircleValue[Num].Cw==3)
{
if(inner==FALSE)return sqrt(CircleValue[Num].R*CircleValue[Num].R-(Xpos-CircleValue[Num].I)*(Xpos-CircleValue[Num].I))+CircleValue[Num].K;
return -sqrt(CircleValue[Num].R*CircleValue[Num].R-(Xpos-CircleValue[Num].I)*(Xpos-CircleValue[Num].I))+CircleValue[Num].K;
}
if(bit && CircleValue[Num].Cw==2)
{
if(inner==FALSE) return -sqrt(CircleValue[Num].R*CircleValue[Num].R-(Xpos-CircleValue[Num].I)*(Xpos-CircleValue[Num].I))+CircleValue[Num].K; //内圆
return sqrt(CircleValue[Num].R*CircleValue[Num].R-(Xpos-CircleValue[Num].I)*(Xpos-CircleValue[Num].I))+CircleValue[Num].K; //外圆
}
}
DispErrCode(38);//"运动中计算错误,系统溢出"
return 0; //add by zxj at 2006.10.23
}
INT32U G71FindStartHang(INT32U Hang)
{
INT32U i;
INT8U j,k,Err;
INT8U buf[10];
INT32U FindHang;
i=g_DataBuf.ProgAdd[g_Usrparam.CurrentFileNum];//当前程序号
//Uart_Printf("\n 当前程序文件 i=%d",i);
while(1)
{
if (g_DataBuf.DataBuf[i]=='N')
{
j=0;i++;Err=0;
while(g_DataBuf.DataBuf[i]>='0'&&g_DataBuf.DataBuf[i]<='9')//0-9数字
{
buf[j]=g_DataBuf.DataBuf[i]; //取指令
j++;i++;
if (i>=g_DataBuf.DataLength)return 0xfffff;
if (j>6){Err=1;break;} //数字长度大于6
}
if (Err==0)
{
k=0;FindHang=0;
while(j)
{
FindHang=(buf[k]-'0')+FindHang*10; //去掉N
k++;
j--;
}
if (Hang==FindHang){
return i;
}
}
else{;}
}
else
{
i++;
if (i>=g_DataBuf.DataLength)return 0xfffff;
if (g_DataBuf.DataBuf[i]=='%'){
return 0xfffff;
}
}
}
}
void G71ResetPara(void)
{
bX_Code=0;
bZ_Code=0;
bU_Code=0;
bW_Code=0;
bI_Code=0;
bK_Code=0;
bR_Code=0;
bM_Code=0;
bG_Code=0;
bN_Code=0;
iM_Code=0;
iG_Code=0;
G71_Pos_U=0;
G71_Pos_W=0;
G71_Pos_X=0;
G71_Pos_Z=0;
G71_Pos_I=0;
G71_Pos_K=0;
G71_Pos_R=0;
G71.XaddPerTime=0;
G71.Zremain=0;
G71.Xremain=0;
G71.BackValue=0;
G71.StartHang=0;
G71.EndHang=0; // 结束行
}
/*
BOOLEAN G71Motion(void)
{
INT8U j,k,ret;
BOOLEAN bCircle,bLine;
g_Current_ASpeed=g_Current_PSpeed*g_Current_Inp_Rate;
if(g_Current_ASpeed>g_Sysparam.Max_FastSpeed)
g_Current_ASpeed=g_Sysparam.Max_FastSpeed;
Set_InpSpeed(g_Current_ASpeed);
while(1)
{
g_MoveMode=1;
G01_AbsPos(LineValue[1].StartX,LineValue[1].StartZ);
ret=WaitMotionEnd();
if(ret==255)return TRUE;
if(ret==0)break;
}
bCircle=0;bLine=0;
for (j=2;j<=AllNum;j++)
{
for (k=1;k<MAXNUMBER;k++)
{
if (CircleValue[k].Pos==j)
{
bCircle=TRUE;
break;
}
if (LineValue[k].Pos==j)
{
bLine=TRUE;
break;
}
}
if(bLine)
{
g_Current_ASpeed=g_Current_PSpeed*g_Current_Inp_Rate;
if(g_Current_ASpeed>g_Sysparam.Max_FastSpeed)
g_Current_ASpeed=g_Sysparam.Max_FastSpeed;
Set_InpSpeed(g_Current_ASpeed);
while(1)
{
g_MoveMode=1;
G01_AbsPos(LineValue[k].EndX,LineValue[k].EndZ);
ret=WaitMotionEnd();
if(ret==255)return TRUE;
if(ret==0)break;
}
}
if(bCircle)
{
g_Current_ASpeed=g_Current_PSpeed*g_Current_Inp_Rate;
if(g_Current_ASpeed>g_Sysparam.Max_FastSpeed)
g_Current_ASpeed=g_Sysparam.Max_FastSpeed;
Set_InpSpeed(g_Current_ASpeed);
//if(CircleValue[k].Cw==2)
//{
// ret=G02G03_CW_ZX(CircleValue[k].EndX,CircleValue[k].EndZ,0,CircleValue[k].I,CircleValue[k].K,FALSE);
// if(ret)return TRUE;
//}
//else
//{
// ret=G02G03_CW_ZX(CircleValue[k].EndX,CircleValue[k].EndZ,0,CircleValue[k].I,CircleValue[k].K,TRUE);
// if(ret)return TRUE;
//}
while(1)
{
if(CircleValue[CircleShapNum].Cw==2)
{
G02_AbsPos(CircleValue[k].EndX,CircleValue[k].EndZ,CircleValue[k].I,CircleValue[k].K);
}
else
{
G03_AbsPos(CircleValue[k].EndX,CircleValue[k].EndZ,CircleValue[k].I,CircleValue[k].K);
}
g_MoveMode=1;
ret=WaitMotionEnd();
if(ret==255)return TRUE;
if(ret==0)break;
}
}
bCircle=FALSE;bLine=FALSE;
}
return TRUE;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -