自定义凸轮表: 首先自定义凸轮表声明: VAR_GLOBAL D1_CAM :MC_CAM_REF; 凸轮表名字映射 D1_xyva :ARRAY[0..4] OF SMC_CAMXYVA; 凸轮表点映射,数组多少决凸轮点的多少 END_VAR 然后就着手在程序里面编写凸轮表的点坐标。 (*CAM1 Table made*) D1_CAM.byType:=3; D1_CAM.strCAMName:='D1_CAM';凸轮表名字 D1_CAM.wCamStructID:=56372; D1_CAM.nElements:=5;凸轮表点数 D1_CAM.xStart:=0;起点 D1_CAM.xEnd:=360;终点 D1_CAM.pce:=ADR(D1_xyva);凸轮表地址映射 D1_xyva[0].dX:=0; D1_xyva[0].dY:=0; D1_xyva[0].dV:=0; D1_xyva[0].dA:=0; 自定义数组的数据里面必须包含起点(xya【0】)和终点(xEnd). MC_CAM_REF输入输出引脚定义: MC_CAM_REF(STRUCT) 这个数据类型是库“SM3_Basic.library”的一部分。它代表一个普通CAM并包含如下元素: 组件 | 类型 | 初始值 | 描述 | wCamStructID | WORD | 16#DC34 | | byType | BYTE | 0 | 0=多项式的,1=等距的,2=元素最优化的,非等距的 3= XYVA(由主设备位置,从设备位置,速度,加速度组成的特定点的多项式描述) | byVarType | BYTE | 0 | 1: INT 2: UINT 3: DINT 4: UDINT 5: REAL 6: LREAL | xStart | LREAL | | CAM域。主设备的起始位置。 | xEnd | LREAL | | CAM域。主设备的终止位置。 | nElements | INT | | 元素个数,它依赖于从设备位置、主设备/从设备位置或XYAV点的类型编号。 | nTappets | INT | | 开关动作的个数。 | pce | POINTER TO BYTE | 0 | 指向SMC_CAMElement或SMC_CamTable的指针。 | pt | POINTER TO SMC_CAMTappet | 0 | 指向SMC_CAMElement或SMC_CamTable的指针。 | dwTappetActiveBits | DWORD | | 内部变量。 | strCAMName | STRING | '' | CAM名称。 | byInterpolationQuality | BYTE | 1 | 1 = 线性插补。 3 = 三次方插补。 | bChangedOnline | BOOL | FALSE | 内部变量。 |
MC_CAMTABLESELECT(FB) | 类型 | 初始值 | 描述 | VAR_IN_OUT | | | | Master | AXIS_REF | | 关于主轴,见AXIS_REF_SM3。 | Slave | AXIS_REF | | 关于从轴,见AXIS_REF_SM3。 | CamTable | MC_CAM_REF | | 关于CAM描述,见MC_CAM_REF | VAR_INPUT | | | | Execute | BOOL | FALSE | 输入值的上升沿将启动该功能块的执行。 | Periodic | BOOL | TRUE | TRUE =周期的, FALSE = 非周期的 | MasterAbsolute | BOOL | TRUE | TRUE = 绝对, FALSE = 相对 坐标 | SlaveAbsolute | BOOL | TRUE | TRUE = 绝对, FALSE = 相对 坐标 | VAR_OUTPUT | | | | Done | BOOL | FALSE | 如果预选已经完成,则为TRUE | Busy | BOOL | FALSE | 当功能块执行还没结束时为TRUE。 | Error | BOOL | FALSE | 在功能块内部发生错误的信号。 | ErrorID | SMC_ERROR | 0 | 错误指示,见SMC_Error。 | CamTableID | MC_CAM_ID | | 要被功能块MC_CamID使用的CAM工作台标识号。 |
注意:
- 一个虚拟轴可被用作主轴。
- 当输出Done为TRUE时,CamTableID 有效且可以在MC_CamIn中使用。
MC_CAMIN (FB) | | | | VAR_IN_OUT | | | | Master | | | 关于主轴,见AXIS_REF_SM3。 | Slave | | | 关于从轴,见AXIS_REF_SM3。 | VAR_INPUT | | | | Execute | | | | MasterOffset | | | | SlaveOffset | | | | MasterScaling | | | | SlaveScaling | | | | StartMode | | | | CamTableID | | | 所用的CAM工作台的标识符,MC_CamID的输出。 | VelocityDiff | | | | Acceleration | | | | Deceleration | | | | TappetHysteresis | | | | VAR_OUTPUT | | | | InSync | | | 如果从设备根据CAM工作台同步于主设备则值为TRUE。 | Busy | | | | CommandAborted | | | | Error | | | | ErrorID | | | | EndOfProfile | | | | Tappets | | | 要被SMC_GetTappetValue评估的挺杆信号。 |
- 主设备不一定是固定的。
- 如果在执行MC_CamIn 时实际的主设备和从设备的位置并不符合于偏移值,则要么发生一个错误,要么系统自动处理出现的偏差。
- StartMode: CAM要么“绝对”地要么“相对”地被定位于主-从设备的位置。“ramp-in”是供货商定义的值。它可以与附加参数结合起来,比如主设备距离参数、加速度参数或者其他供货商确定的参数,而从设备ramp-in 到凸轮分布中(“飞行结合”)。
- 从设备偏置的机械模拟是一个以附加固定层厚度焊接的凸轮。因此,从设备位置总有固定偏移,这个偏移假设为线性引导从设备挺杆,可被解释为主设备轴的轴线偏移。
MC_CAMOUT (FB) | 类型 | 初始值 | 描述 | VAR_IN_OUT | | | | Slave | AXIS_REF | | 关于从轴,见AXIS_REF_SM3 | VAR_INPUT | | | | Execute | BOOL | FALSE | 输入值的上升沿将启动该功能块的执行。 | VAR_OUTPUT | | | | Done | BOOL | FALSE | 如果凸轮被放开为TRUE。 | Busy | BOOL | FALSE | 当功能块执行还没结束时为TRUE。 | Error | BOOL | FALSE | 在功能块内部发生错误的信号。 | ErrorID | SMC_ERROR | 0 | 错误指示,见SMC_Error。 |
注意:
- 假设该命令被后面还有别的对于MC_Stop, MC_GearIn 实例的命令。如果没有其他命令跟随,则默认条件应该是:保持前一个速度。
电子凸轮相比于机械凸轮有很大的灵活性和自由性。我们可以通过改变相应点的位置就实现了对凸轮轨迹的改变,就不需要像以前那样更改机械装置。而且电子凸轮使用起来方便有很大的优越性,可以完全替代机械凸轮,只是相对成本比较高。 对于其用法和程序建立当然也会比较复杂些,特别对于凸轮表的建立,直接关系到凸轮构建的成功与否,另外就是要对加工工艺非常熟悉。
|