codesys CNC控制程序

——————————————————————————————————

CNC G代码

——————————————————————————————————

N000 F10 E30
N001 G00 X250 Y120
N010 G03 I-100 J0 T360
N020 G00 X300 Y150
N030 G01 X500 
N040 G01 Y30
N050 G01 X300
N060 G01 Y150

——————————————————————————————————

变量

——————————————————————————————————

PROGRAM PLC_PRG
VAR
    MC_PowerX:MC_Power;
    MC_PowerY:MC_Power;
    MC_PowerZ:MC_Power;
    SMC_Interpolator:SMC_Interpolator;
    SMC_TRAFO_Gantry3:SMC_TRAFO_Gantry3;
    SMC_ControlAxisByPosX:SMC_ControlAxisByPos;
    SMC_ControlAxisByPosY:SMC_ControlAxisByPos;
    SMC_ControlAxisByPosZ:SMC_ControlAxisByPos;
    
    x:INT;
    y:INT;
    z:INT;
    
    SMC_PathCopierFile:SMC_PathCopierFile;
    VisuStruct3DControl:VisuStruct3DControl;
    
    SMC_PositionTracker:SMC_PositionTracker;
    pointbuffer:ARRAY [0..100000] OF VisuStruct3DPathPoint;
END_VAR

——————————————————————————————————

程序

——————————————————————————————————

//使能X
MC_PowerX(
    Axis:=axisX , 
    Enable:=TRUE , 
    bRegulatorOn:=TRUE , 
    bDriveStart:=TRUE , 
    Status=> , 
    bRegulatorRealState=> , 
    bDriveStartRealState=> , 
    Busy=> , 
    Error=> , 
    ErrorID=> );

//使能Y
MC_PowerY(
    Axis:=axisY , 
    Enable:=TRUE , 
    bRegulatorOn:=TRUE , 
    bDriveStart:=TRUE , 
    Status=> , 
    bRegulatorRealState=> , 
    bDriveStartRealState=> , 
    Busy=> , 
    Error=> , 
    ErrorID=> );

//使能Z
MC_PowerZ(
    Axis:=axisZ , 
    Enable:=TRUE , 
    bRegulatorOn:=TRUE , 
    bDriveStart:=TRUE , 
    Status=> , 
    bRegulatorRealState=> , 
    bDriveStartRealState=> , 
    Busy=> , 
    Error=> , 
    ErrorID=> );

//插补器
SMC_Interpolator(
    bExecute:= , 
    poqDataIn:=ADR(CNC) , 
    bSlow_Stop:= , 
    bEmergency_Stop:= , 
    bWaitAtNextStop:= , 
    dOverride:= , 
    iVelMode:= , 
    dwIpoTime:=6000 , 
    dLastWayPos:= , 
    bAbort:= , 
    bSingleStep:= , 
    bAcknM:= , 
    bQuick_Stop:= , 
    dQuickDeceleration:= , 
    dJerkMax:= , 
    dQuickStopJerk:= , 
    bSuppressSystemMFunctions:= , 
    bDone=> , 
    bBusy=> , 
    bError=> , 
    wErrorID=> , 
    piSetPosition=> , 
    iStatus=> , 
    bWorking=> , 
    iActObjectSourceNo=> , 
    dActObjectLength=> , 
    dActObjectLengthRemaining=> , 
    dVel=> , 
    vecActTangent=> , 
    iLastSwitch=> , 
    dwSwitches=> , 
    dWayPos=> , 
    wM=> , 
    adToolLength=> , 
    Act_Object=> );

//解析XYZ
SMC_TRAFO_Gantry3(
    pi:=SMC_Interpolator.piSetPosition , 
    dOffsetX:= , 
    dOffsetY:= , 
    dOffsetZ:= , 
    dx=> , 
    dy=> , 
    dz=> );
    
//位置控制轴x
SMC_ControlAxisByPosX(
    Axis:=axisX , 
    iStatus:=SMC_Interpolator.iStatus , 
    bEnable:=SMC_Interpolator.bWorking , 
    bAvoidGaps:= , 
    fSetPosition:=SMC_TRAFO_Gantry3.dx , 
    fGapVelocity:=100 , 
    fGapAcceleration:=100 , 
    fGapDeceleration:=100 , 
    fGapJerk:=100 , 
    bBusy=> , 
    bCommandAborted=> , 
    bError=> , 
    iErrorID=> , 
    bStopIpo=> );

//位置控制轴y
SMC_ControlAxisByPosY(
    Axis:=axisY , 
    iStatus:=SMC_Interpolator.iStatus , 
    bEnable:=SMC_Interpolator.bWorking , 
    bAvoidGaps:= , 
    fSetPosition:=SMC_TRAFO_Gantry3.dy , 
    fGapVelocity:=100 , 
    fGapAcceleration:=100 , 
    fGapDeceleration:=100 , 
    fGapJerk:=100 , 
    bBusy=> , 
    bCommandAborted=> , 
    bError=> , 
    iErrorID=> , 
    bStopIpo=> );

//位置控制轴Z
SMC_ControlAxisByPosZ(
    Axis:=axisZ , 
    iStatus:=SMC_Interpolator.iStatus , 
    bEnable:=SMC_Interpolator.bWorking , 
    bAvoidGaps:= , 
    fSetPosition:=SMC_TRAFO_Gantry3.dz , 
    fGapVelocity:=100 , 
    fGapAcceleration:=100 , 
    fGapDeceleration:=100 , 
    fGapJerk:=100 , 
    bBusy=> , 
    bCommandAborted=> , 
    bError=> , 
    iErrorID=> , 
    bStopIpo=> );

x:=TO_INT(axisX.fActPosition);
y:=TO_INT(-axisY.fActPosition);
z:=TO_INT(axisZ.fActPosition);

//位置跟踪器
SMC_PositionTracker(
    bEnable:=SMC_Interpolator.bBusy , 
    bClear:=SMC_Interpolator.bDone , 
    dX:=axisX.fActPosition , 
    dY:=axisY.fActPosition , 
    dZ:=axisZ.fActPosition , 
    udiNumberOfPointsInArray:=SIZEOF(pointbuffer)/SIZEOF(pointbuffer[0]) , 
    pBuffer:=ADR(pointbuffer) , 
    vs3dt=> );

——————————————————————————————————

界面

——————————————————————————————————

codesys CNC控制程序_第1张图片

codesys CNC控制程序_第2张图片

codesys CNC控制程序_第3张图片

codesys CNC控制程序_第4张图片

你可能感兴趣的:(codesys,st)