附件下载,需登录可以查看贴内更多信息
您需要 登录 才可以下载或查看,没有账号?立即注册
x
FUNCTION_BLOCK Line_Interpolation//直线插补
VAR_IN_OUT
AxisX: AXIS_REF_SM3;
AxisY: AXIS_REF_SM3;
END_VAR
VAR_INPUT
bExecute: BOOL;
bQuick_Stop:BOOL;
XEndPositionREAL;
YEndPositionREAL;
VelocityREAL;
AccelerationREAL;
DecelerationREAL;
dwIpoTime:INT;
END_VAR
VAR_OUTPUT
Done:BOOL;
Busy:BOOL;
Error:BOOL;
ErrorID:SMC_ERROR;
END_VAR
VAR
LINE_Interpolation1 : SMC_OUTQUEUE := (nReadPos:=0, bFull:=FALSE, bEndOfList:=TRUE, byGenerator:=255, strProgramName:='LINE_Interpolation1', pbyBuffer := ADR(LINE_Interpolation1_Q), nCapacity := 4, nWritePos := 1, xPartofLM := TRUE);
LINE_Interpolation1_Q : ARRAY[0..3] OF SMC_GEOINFO := [
(iObjNo:=1, iSourceLine_No:=0, iMoveType:=100,
piStartPos:=(iFrameNo:=0, wAuxData:=7, wSProfile:=0, dX:=0, dY:=0, dZ:=0, dA:=0, dB:=0, dC:=0, dA1:=0, dA2:=0, dA3:=0, dA4:=0, dA5:=0, dA6:=0),
piDestPos:=(iFrameNo:=0, wAuxData:=7, wSProfile:=0, dX:=400, dY:=400, dZ:=0, dA:=0, dB:=0, dC:=0, dA1:=0, dA2:=0, dA3:=0, dA4:=0, dA5:=0, dA6:=0),
dP1:=0, dP2:=0, dP3:=0, dP4:=0, dP5:=0, dP6:=0, dP7:=0, dP8:=0, dP9:=0, dP10:=0, dP11:=0, dP12:=0, dP13:=0, dP14:=0, dP15:=0, dP16:=0, dP17:=0, dP18:=0,
vX:=(dX:=1,dY:=0,dZ:=0), vY:=(dX:=0,dY:=1,dZ:=0), vN:=(dX:=0,dY:=0,dZ:=1),
dT1:=0, dT2:=1, dToolRadius:=0, dVel:=0, dVelEnd:=0, dVelEndStored:=0, dAccel:=0, dDecel:=0, dLength:=0, byInternMark:=0, b3DMode:=FALSE,
dHelpPos:=[0,0,0], iHelpID:=[0,0,0],
adVelAddAx:=[0,0,0,0,0,0,0,0], adAccAddAx:=[0,0,0,0,0,0,0,0], adDecAddAx:=[0,0,0,0,0,0,0,0], wInternMark2:=0, dwFeatureFlags:=0, aAdditionalParams:=[0,0,0])];
SMC_Interpolator1:SMC_Interpolator;
SMC_TRAFO_Gantry2D:SMC_TRAFO_Gantry2;
SMC_TRAFOF_Gantry2D:SMC_TRAFOF_Gantry2;
SMC_ControlAxisByPosX,SMC_ControlAxisByPosY:SMC_ControlAxisByPos;
bExecuteR: R_TRIG;
bExecuteR(CLK:=bExecute, Q=> );
IF bExecuteR.Q THEN
LINE_Interpolation1_Q[0].piStartPos.dX:=AxisX.fActPosition;
LINE_Interpolation1_Q[0].piStartPos.dY:=AxisY.fActPosition;
LINE_Interpolation1_Q[0].piDestPos.dX:=XEndPosition;
LINE_Interpolation1_Q[0].piDestPos.dY:=YEndPosition;
LINE_Interpolation1_Q[0].dVel:=Velocity;
LINE_Interpolation1_Q[0].dAccel:=Acceleration;
LINE_Interpolation1_Q[0].dDecel:=Deceleration;
LINE_Interpolation1_Q[0].dLength:=SQRT((XEndPosition-AxisX.fActPosition)*(XEndPosition-AxisX.fActPosition)+(YEndPosition-AxisY.fActPosition)*(YEndPosition-AxisY.fActPosition));
END_IF
SMC_Interpolator1(
bExecute:=bExecute,
poqDataIn:=ADR(LINE_Interpolation1),
bSlow_Stop:= ,
bEmergency_Stop:=SMC_ControlAxisByPosX.bError OR SMC_ControlAxisByPosX.bStopIpo OR SMC_ControlAxisByPosY.bError OR SMC_ControlAxisByPosY.bStopIpo,
bWaitAtNextStop:= ,
dOverride:= ,
iVelMode:= ,
dwIpoTime:=INT_TO_DWORD(dwIpoTime),
dLastWayPos:= ,
bAbort:= ,
bSingleStep:= ,
bAcknM:= ,
bQuick_Stop:=bQuick_Stop ,
dQuickDeceleration:= ,
dJerkMax:= ,
dQuickStopJerk:= ,
bDone=>Done,
bBusy=>Busy,
bError=>Error,
wErrorID=>ErrorID,
piSetPosition=> ,
iStatus=> ,
bWorking=> ,
iActObjectSourceNo=> ,
dVel=> ,
vecActTangent=> ,
iLastSwitch=> ,
dwSwitches=> ,
dWayPos=> ,
wM=> );
SMC_TRAFO_Gantry2D(
pi:=SMC_Interpolator1.piSetPosition,
dOffsetX:= ,
dOffsetY:= ,
dx=> ,
dy=> );
SMC_ControlAxisByPosX(
Axis:=AxisX,
iStatus:=SMC_Interpolator1.iStatus,
bEnable:=SMC_Interpolator1.bWorking,
bAvoidGaps:=TRUE,
fSetPosition:=SMC_TRAFO_Gantry2D.dx,
fGapVelocity:=10,
fGapAcceleration:=10,
fGapDeceleration:=10,
fGapJerk:= ,
bBusy=> ,
bCommandAborted=> ,
bError=> ,
iErrorID=> ,
bStopIpo=> );
SMC_ControlAxisByPosY(
Axis:=AxisY,
iStatus:=SMC_Interpolator1.iStatus,
bEnable:=SMC_Interpolator1.bWorking,
bAvoidGaps:=TRUE,
fSetPosition:=SMC_TRAFO_Gantry2D.dy,
fGapVelocity:=10,
fGapAcceleration:=10,
fGapDeceleration:=10,
fGapJerk:= ,
bBusy=> ,
bCommandAborted=> ,
bError=> ,
iErrorID=> ,
bStopIpo=> );
SMC_TRAFOF_Gantry2D(
DriveX:=AxisX,
DriveY:=AxisY,
dOffsetX:= ,
dOffsetY:= ,
minX:=0,
maxX:=100,
minY:=0,
maxY:=100,
dx=> ,
dy=> ,
dnx=> ,
dny=> ,
ratio=> ,
dnOffsetX=> ,
dnOffsetY=> );
免责声明:内容为网友自行发布或者来自互联网分享或者参考文献,如果侵犯了您的权益,请联系站长 1304546267@qq.com,我们会及时删除侵权内容,感谢您的理解! |