查看: 4926|回复: 9
收起左侧

[教程经验] 汇川CNC的初步应用指南

sea3282867 2020-10-31 10:10:15 | 显示全部楼层 |阅读模式
邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x










关于汇川AM600等运动控制器的CNC的初步操作手册


                                              作者:杨洋























第一步:在工程“Application”下添加“CNC程序”


添加完成后如下图:






第二步:双击“CNC设置”选择你需要的预处理功能块,如下图:





































第三步:设置CNC程序的属性,如下图:


进入后如下图:


选择第二个”CNC”标签,如下图:


编译模式选择“SMC_CNC_REF.

该格式是将用户G-Code程序读入内存后的文本数据串,其中可以包含由变量代表的目标位置,其中的插补模式等需要前后文分析才能确定,需要解码后才能成为OutQueue 格式;

























第四步:编写自己需要的CNC代码,如下图:


N000 G51 D$DR$          // 倒角的半径“DR”是个变量,要先在全局变量表中定义好.

N010 G01 X500 Y0 F50 E50 E-50

N020 G01 X500 Y500 F50 E50 E-50

N030 G01 X00 Y500 F50 E50 E-50

N040 G01 X00  Y0 F50 E50 E-50

N050 G50


DR”等变量也可以在“CNC”给定一个初始值,如下图


点击“变量”后,如下图:

在“值”的那一栏,给定一个初始值。



第五步:添加两个伺服轴,其它设置不在这里赘述,只讲一下关于“CNC”的设置;如下图:


G代码后面的速度值不要超过这个地方的值,否则的话bstopiop也会被置位;






























第六步:我们后台不能做CNC仿真,G代码要先解析再速度平滑,速度检查,再给到插补器,如下:


SMC_NCDecoder_1(

         ncprog:=CNCY1,

         bExecute:=bExecuteButton,

         bAbort:=,

         bAppend:=,

         bStepSuppress:=,

         piStartPosition:=,

         nSizeOutQueue:=SIZEOF(ExampleBuf),

         pbyBufferOutQueue:=ADR(ExampleBuf) ,

         bEnableSyntaxChecks:=,

         bDone=>,

         bBusy=>,

         bError=>,

         wErrorID=>,

         poqDataOut=>,

         iStatus=>,

         iLineNumberDecoded=>,

         GCodeText=>);                   //CNC代码解析


SMC_SmoothPath_1(

         bExecute:=SMC_NCDecoder_1.bDone,

         bAbort:=,

         bAppend:=,

         poqDataIn:=SMC_NCDecoder_1.poqDataOut,

         dEdgeDistance:=,

         dAngleTol:=,

         nSizeOutQueue:=SIZEOF(ExampleBuf1),

         pbyBufferOutQueue:=ADR(ExampleBuf1) ,

         eMode:=,

         bSymmetricalDistances:=,

         bImprovedSymmetricCuts:=,

         eAddAxMode:=,

         dMinimumCurvatureRadius:=,

         bCheckCurvature:=,

         dRelativeCurvatureTol:=,

         bCheckAddAxVelJump:=,

         dMaxAddAxVelDifference:=,

         bDone=>,

         bBusy=>,

         bError=>,

         wErrorID=>,

         poqDataOut=>,

         udiStopsDueToCurvatureRadius=>);       //指令平滑


SMC_CheckVelocities_1(

         bExecute:=SMC_NCDecoder_1.bDone,

         bAbort:=,

         poqDataIn:=SMC_SmoothPath_1.poqDataOut,

         dAngleTol:=,

         bCheckAddAxVelJump:=,

         dMaxAddAxVelDifference:=,

         bBusy=>,

         bError=>,

         wErrorID=>,

         poqDataOut=>);      //速度检查



SMC_Interpolator_1(

         bExecute:=SMC_SmoothPath_1.bDone,

         poqDataIn:=SMC_CheckVelocities_1.poqDataOut,

         bSlow_Stop:=,

bEmergency_Stop:=  SMC_ControlAxisByPos_Axis.bError    OR SMC_ControlAxisByPos_Axis.bStopIpo  OR SMC_ControlAxisByPos_Axis_1.bError   ORSMC_ControlAxisByPos_Axis_1.bStopIpo ORSMC_Interpolator_1.bError             ORSMC_CheckVelocities_1.bError        ORSMC_SmoothPath_1.bError ,

         bWaitAtNextStop:=,

         dOverride:=,

         iVelMode:=1,

         dwIpoTime:=4000, //一般设置与ETHERCAT的周期一样

         dLastWayPos:=,

         bAbort:=,

         bSingleStep:=,

         bAcknM:=,

         bQuick_Stop:=,

         dQuickDeceleration:=,

         dJerkMax:=,

         dQuickStopJerk:=,

         bSuppressSystemMFunctions:=,

         bDone=>,

         bBusy=>,

         bError=>,

         wErrorID=>,

         piSetPosition=>,

         iStatus=>,

         bWorking=>,

         iActObjectSourceNo=>,

         dVel=>,

         vecActTangent=>,

         iLastSwitch=>,

         dwSwitches=>,

         dWayPos=>,

         wM=>);   


SMC_TRAFO_Gantry2_1(

         pi:=SMC_Interpolator_1.piSetPosition,

         dOffsetX:=0,

         dOffsetY:=0,

         dx=>,

         dy=>);      //坐标系切换


SMC_ControlAxisByPos_Axis(

         Axis:=Axis,

         iStatus:=SMC_Interpolator_1.iStatus,

         bEnable:=SMC_Interpolator_1.bWorking,

         bAvoidGaps:=TRUE,

         fSetPosition:=SMC_TRAFO_Gantry2_1.dx,

         fGapVelocity:=100,

         fGapAcceleration:=100,

         fGapDeceleration:=100,

         fGapJerk:=100,

         bBusy=>,

         bCommandAborted=>,

         bError=>,

         iErrorID=>,

         bStopIpo=>);   //控制X

         

SMC_ControlAxisByPos_Axis_1(

         Axis:=Axis_1,

         iStatus:=SMC_Interpolator_1.iStatus,

         bEnable:=SMC_Interpolator_1.bWorking,

         bAvoidGaps:=TRUE,

         fSetPosition:=SMC_TRAFO_Gantry2_1.dy,

         fGapVelocity:=100,

         fGapAcceleration:=100,

         fGapDeceleration:=100,

         fGapJerk:=100,

         bBusy=>,

         bCommandAborted=>,

         bError=>,

         iErrorID=>,

         bStopIpo=>); //控制Y





上一篇:CoDeSys TCPIP程序
下一篇:modbus rtu始终提示超时

已有 0 人打赏作者

回复 邀请回答送花

使用道具 举报

Inovance版主 2020-11-1 11:12:44 | 显示全部楼层
图全挂了啊,兄弟;不支持word图片直接复制,可以截图重新上传
回复 送花

使用道具 举报

Inovance版主 2020-11-1 12:51:46 | 显示全部楼层

重新上传后,再 @我
回复 送花

使用道具 举报

墨陌 2021-1-4 09:36:01 | 显示全部楼层

图全挂了啊,兄弟;不支持word图片直接复制,可以截图重新上传
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部