CoDeSys运动过程控制详解.docx
5页SMC_TRAFO_Gantry3S MC_TRAF0_GANTRY3pi : SMC_Paslnfo dx: LREAL dOfTsetXlLREAL d/: LREAL dOffsetY:LREAL dz: LREAL dOffsetZ:LREALpi: SMC_PosInfo 目标位置向量插补器的输出 dOffsetX, dOffsetY: LREAL x和y轴的偏移量dx, dy: LREALx和y轴的目标值SMC_TRAFOF_Gantry3SMC_TRAF0F_GANTRY3dOffsetX : LREAL dOffsetY : LREAL dOffsetZ : LREAL minX: LREAL maxX : LREAL minY: LREAL maxY : LREAL办:LREAL dy : LREAL dz : LREAL dnx:LREAL dny:LREAL ratio : LREAL dnOffsetX : LREALDriveX: AMIS_REF (VAR_IN_OUTJ dnOffsetY : LREALDriveY: AXIS_REF (VAR_IN_OUTJ DriveX: AXIS_REF (VAR」N_OUTJ DriveZ:/>XIS_REF WAR」N_OITD DriveY: AXIS_REF (VAR」NDriveZ: AXIS REF (VAR IN OUT)dOffsetX, 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间隔的比率用于可视化部分)SMC_InterpolatorSMC_Interpolator 功能块用于将一段 SMC_GEOINFO 对象描述的连续轨迹转换成离散 轨迹位置点(discrete path position points),因此需要考虑到定义的速度轮廓和时间式样 这些位置点会由IEC程序(例如drive-ais-position)转换并送入驱动器SMCJNTERPOUkTORbExecute : BOOLbDone : BOOLpoqDataln : POINTER TO SMC_OUTQUEUEbError: BOOLbSlcw_Stop : BOOLiError: SMC_INT_ERRORbErriergency_Stop : BOOLpiSetPosition : SMC_POSINFObWaitAtNextStop : BOOLiStaius : SMC_INT_STATUSdOverride: LREALbWorking : BOOLiVelMode : SMC_INT_VELMODEMObjectSourceNo : INTbCheckTransVel: BOOLdVel: LREALdwIpoTime : DWORDvecActTangent: 8MC_VECTOR3D iL日stH已IpMark : INT dwH已IpMarks : DWORD模块的输入:bExecute: BOOL 函数模块会重置,并在此输入出现上升沿时开始处理 poqDataIn: POINTER TO SMC_OUTQUEUE此变量指向SMC_OUTQUEUE结构体对象,包含了轨迹的SMC_GEOINFO对象;典型 地,它指向前一个模块的输出DataOut (例如,SMC_NCDecoder/SMC_SmoothPath)。
bSlow_Stop: BOOL如果此变量被设置成FALSE (缺省值),在不停止的情况下通过轨迹若为TRUE,则 SMC_Interpolator根据已定义的速度轮廓(byVelMode,见下方)和当前GEOIN FO对象 (dDecel,见下方)的最大延迟时间将速度减为0,并等到bSlow_Stop被重置为F ALSEbEmergency_Stop: BOOL此输入的缺省值为FALSEo 一旦它变为TRUE, SMC_Interpolator将立即停止,也就是说 将保持位置因此速度也会被立即设置成0bWaitAtNextStop: BOOL一旦此变量为FALSE(缺省),在不停止的情况下通过轨迹若为TRUE, SMC_Interpolator 会在下一个要求的停止处保持位置,也就是说在速度为0处;典型地,在轨迹的转角处, 保持暂停状态直到bWaitAtNextStop设置成F ALSEodOverride: LREAL此变量可用于控制越程大于0.01的值是合法的dOverride可以与定义好的速度相乘, 因此可以增加或减少定义的速度例如dOverride=1 (缺省)会使程序以定义的速 度执行,而dOveride=2将以两倍的速度执行。
请注意:可以在任何时候修改override的值,但是只有在当前没有加速或减速的情况下 才会将修改值应用到实际程序中iVelMode: SMC_INT_VELMODE此输入定义了速度轮廓梯形(TRAPEZOID) ”值(缺省值)将使速度曲线轮廓呈梯 形状S形(SIGMOID) ”将使速度曲线轮廓呈S形梯形速度图实例(byVel_Mode=0):在上面例子中,最大加速度(Accel)比最大减速度(Decel)小这会引起速度曲线的 加速和减速部分斜率的不同与梯形相比,S形曲线的优点是关联的加速度是连续的,因此减轻了重型机器的负担 但它同时会增加一点计算时间由于将S速度曲线(蓝色)改变成梯形曲线(红色)不会使通过整条轨迹的时间变长, 在起始和结束端受限的加速度增量需要由中间段的较高的加速度来补偿因此必须注 意,在SMC_GEOINFO对象中编程指定的最大加速度或减速度最多将会被超过n/2就如同在DOverride中描述的那样,只有在当前没有加速或减速的情况下才会将修改值 应用到实际程序中为了对附加轴进行S形(蓝色,见下图)插补而不是线性插补(红色),必须使当前对 象的piStartPos的wSProfile变量的相应位置位。
这将使附加轴不是根据X,Y,Z空间中的轨迹长度来进行线性插补,而是根据轨迹长度进行多项式插补,因此会得到 S 形轴位置轮廓,dwIpoTime: DWORD此变量包含循环时间(单位usee),在每次调用时都需要进行设置bDone: BOOL一旦输入数据(popDataln)处理结束了,此变量将被设置成TRUE此后,在重置之前, SMC_NCDecoder不会有任何动作如果输入bExecute为FALSE, bDone会被设置成FALSEbError: BOOL如果出现错误,此输入将变为TRUEwErrorID: SMC_ ERROR (INT)此枚举型变量可以描述在插补过程中出现的错误出现错误后,在重新置位以前处理过 程停止对于每个调用,SMC_Interpolator会根据预定义的参数,历史速度和前一个位置进行计 算并输出下一个点一旦当前的GEOIN FO对象处理完毕,它会从 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_FINISHED5GEOIN F0列表的处理停止此后进入DataI n的GEOIN F0不会被 处理IPO_WAIT6模块处于等待状态,因为出现下列的某种情况:Emergency_Stop = TRUESlow_Stop = TRUE and Vel = 0Wait At Next Stop = TRUE and Vel = 0bWorking: BOOL如果列表已经开始处理了,但还未完成(IPO_ACCEL或IPO_CONSTANT或IPO_DECEL 或IPO_WAIT),此输出将为TRUE否则bWorking为FALSEiActObjectSourceNo: INT当前处理的Datal n队列中GEOIN FO对象的SourceLine_Nr值。
如果SMC_Interpolator没有 工作(Working=FALSE),值为“-1”dVel: LREAL此变量包含当前速度,根据对象给定的i po_Time时间和从前一个位置移动到设定点位置 而计算得出vecActTangent: SMC_VECTOR3D此结构体包含移动至USet_Position位置的有效的轨迹方向如果Vel=0, vecAct_Tangent 的值为0iLastSwitch: INT 此输出显示上一个通过的开关的序号注意:如果在一个循环内通过了几个开关,只有 最后一个会被显示出来dwSwitches: DWORD此双字节描述了从1-32所有开关的当前状态DWORD的第0位代表开关1,第 31位代表开关31,第32位对应辅助标记32因此,与iLastSwitch相比,它可以避免 出现某些开关没被考虑到的情况请注意:在轨迹末端,变量SMC_OUTQUEUE为空如果想再进行一次相同的轨迹, 可以通过 解码器和轨迹预处理模块将CNC程序传到一个SMC_OUTQUEUE结构中,或使用 SMC_RESTOREQUEUE(也是SM_CNC.lib的一部分)只有在OUTQUEUE缓存足 够大,能捕 捉完整的轨迹的情况下,才能使用后一种方法。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


