codesys运动过程控制详解

申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

文档介绍

codesys运动过程控制详解

SMC_TRAFO_Gantry3pi:SMC_PosInfo目标位置向量。插补器的输出。dOffsetX,dOffsetY:LREALx和y轴的偏移量。dx,dy:LREALx和y轴的目标值SMC_TRAFOF_Gantry3dOffsetX,dOffsetY:LREALx和y轴的偏移量。与SMC_TRAFO_Gantry3模块的相同。minX,maxX,minY,maxY:LREAL移动范围(用于可视化部分)DriveX,DriveY:AXIS_REFx,y轴dx,dy:LREAL在GEO坐标系中x,y的位置。dnx,dny,dnOffsetX,dnOffsetY:LREALx,y的标准化位置[0...1]和偏移量(用于可视化部分)ratio:LREALx间隔和y间隔的比率。(用于可视化部分)\nSMC_InterpolatorSMC_Interpolator功能块用于将一段SMC_GEOINFO对象描述的连续轨迹转换成离散轨迹位置点(discretepathpositionpoints),因此需要考虑到定义的速度轮廓和时间式样。这些位置点会由IEC程序(例如。drive-ais-position)转换并送入驱动器。模块的输入:bExecute:BOOL函数模块会重置,并在此输入出现上升沿时开始处理poqDataIn:POINTERTOSMC_OUTQUEUE此变量指向SMC_OUTQUEUE 结构体对象,包含了轨迹的SMC_GEOINFO对象;典型地,它指向前一个模块的输出DataOut(例如,SMC_NCDecoder/SMC_SmoothPath)。bSlow_Stop:BOOL如果此变量被设置成FALSE(缺省值),在不停止的情况下通过轨迹。若为TRUE,则SMC_Interpolator根据已定义的速度轮廓(byVelMode,见下方)和当前GEOINFO对象(dDecel,见下方)的最大延迟时间将速度减为0,并等到bSlow_Stop被重置为FALSE。bEmergency_Stop:BOOL此输入的缺省值为FALSE。一旦它变为TRUE,SMC_Interpolator将立即停止,也就是说将保持位置。因此速度也会被立即设置成0。bWaitAtNextStop:BOOL一旦此变量为FALSE(缺省),在不停止的情况下通过轨迹。若为TRUE,SMC_Interpolator会在下一个要求的停止处保持位置,也就是说在速度为0处;典型地,在轨迹的转角处,保持暂停状态直到bWaitAtNextStop设置成FALSE。dOverride:LREAL此变量可用于控制越程。大于0.01的值是合法的。dOverride可以与定义好的速度相乘,因此可以在线增加或减少定义的速度。例如dOverride=1(缺省)会使程序以定义的速度执行,而dOveride=2将以两倍的速度执行。请注意:可以在任何时候修改override的值,但是只有在当前没有加速或减速的情况下才会将修改值应用到实际程序中。iVelMode:SMC_INT_VELMODE此输入定义了速度轮廓。“梯形(TRAPEZOID)”值(缺省值)将使速度曲线轮廓呈梯形状。“S形(SIGMOID)”将使速度曲线轮廓呈S形。\n梯形速度图实例(byVel_Mode=0):S形速度图实例(byVel_Mode=1):在上面例子中,最大加速度(Accel)比最大减速度(Decel)小。这会引起速度曲线的加速和减速部分斜率的不同。与梯形相比,S形曲线的优点是关联的加速度是连续的,因此减轻了重型机器的负担。但它同时会增加一点计算时间。由于将S速度曲线(蓝色)改变成梯形曲线(红色)不会使通过整条轨迹的时间变长,在起始和结束端受限的加速度增量需要由中间段的较高的加速度来补偿。因此必须注意,在SMC_GEOINFO对象中编程指定的最大加速度或减速度最多将会被超过п/2。就如同在DOverride中描述的那样,只有在当前没有加速或减速的情况下才会将修改值应用到实际程序中。为了对附加轴进行S形(蓝色,见下图)插补而不是线性插补(红色),必须使当前对象的piStartPos的wSProfile变量的相\n应位置位。这将使附加轴不是根据X,Y,Z空间中的轨迹长度来进行线性插补,而是根据轨迹长度进行多项式插补,因此会得到S形轴位置轮廓,并且在轨迹段的起始端和结束端的速度和加速度均为0。dwIpoTime:DWORD此变量包含循环时间(单位usec),在每次调用时都需要进行设置。bDone:BOOL一旦输入数据(popDataIn)处理结束了,此变量将被设置成TRUE。此后,在重置之前,SMC_NCDecoder不会有任何动作。如果输入bExecute为FALSE,bDone会被设置成FALSE。bError:BOOL如果出现错误,此输入将变为TRUE。wErrorID:SMC_ERROR(INT)此枚举型变量可以描述在插补过程中出现的错误。出现错误后,在重新置位以前处理过程停止。对于每个调用,SMC_Interpolator会根据预定义的参数,历史速度和前一个位置进行计算并输出下一个点。一旦当前的GEOINFO对象处理完毕,它会从poqDatain-SMC_OUTQUEUE结构体中清除掉。piSetPosition:SMC_POSINFO此变量包含根据预定义计算出的目标位置。Set_Position是一个SMC_POSINFO结构体,它不仅包含轨迹上目标点的笛卡儿坐标,还包含附加轴位置。iStatus:INT_STATUS(INT)此枚举型变量显示了功能块的当前状态。可能的状态有:IPO_UNKNOWN0内部状态。此状态不可能出现在SMC_Interpolator全部处理完成后IPO_INT1模块处于初始化状态;DataIn目前没有满IPO_ACCEL2模块正处于加速状态IPO_CONSTANT3模块正处于匀速运动状态IPO_DECEL4模块正处于减速状态IPO_FINISHED5GEOINFO列表的处理停止。此后进入DataIn的GEOINFO不会被处理IPO_WAIT6模块处于等待状态,因为出现下列的某种情况:Emergency_Stop=TRUESlow_Stop=TRUEandVel=0Wait_At_Next_Stop=TRUEandVel=0\nbWorking:BOOL如果列表已经开始处理了,但还未完成(IPO_ACCEL或IPO_CONSTANT或IPO_DECEL或IPO_WAIT),此输出将为TRUE。否则bWorking为FALSE。iActObjectSourceNo:INT当前处理的DataIn队列中GEOINFO对象的SourceLine_Nr值。如果SMC_Interpolator没有工作(Working=FALSE),值为“-1”。dVel:LREAL此变量包含当前速度,根据对象给定的ipo_Time时间和从前一个位置移动到设定点位置而计算得出。vecActTangent:SMC_VECTOR3D此结构体包含移动到Set_Position位置的有效的轨迹方向。如果Vel=0,vecAct_Tangent的值为0。iLastSwitch:INT此输出显示上一个通过的开关的序号。注意:如果在一个循环内通过了几个开关,只有最后一个会被显示出来。dwSwitches:DWORD此双字节描述了从1-32所有开关的当前状态。DWORD的第0位代表开关1,第31位代表开关31,第32位对应辅助标记32。因此,与iLastSwitch相比,它可以避免出现某些开关没被考虑到的情况。请注意:在轨迹末端,变量SMC_OUTQUEUE为空。如果想再进行一次相同的轨迹,可以通过解码器和轨迹预处理模块将CNC程序传到一个SMC_OUTQUEUE结构中,或使用SMC_RESTOREQUEUE(也是SM_CNC.lib的一部分)。只有在OUTQUEUE缓存足够大,能捕捉完整的轨迹的情况下,才能使用后一种方法。
查看更多

相关文章

您可能关注的文档