力功能程序的示例
下文介绍组合使用了几个力觉功能的一个简单操作的示例。
注意
此示例中所述的参数都是参阅值。
请注意,此示例使用相对稳定的参数,但操作可能不成功,或者动作在某些操作条件下可能会振动,并且可能需要调整参数。
此外,为了便于解释,此示例使用缓慢但稳定的参数。要加快操作速度,需要调整参数。
压装操作
下面介绍了一个程序示例,它将以目标力在恒定方向执行压装操作。
该示例操作是将工件移动到接触位置上方10 [mm]的位置,并使用力控制功能以20 N的力朝工作台压装夹具末端抓取的工件。
同时,这里使用力觉触发器功能监视在操作过程中是否施加了过大的力(100 [N]或以上)。如果检测到过大的力,将导致发生错误。
若使用力觉动作限制功能,在动作中发生了意外动作(移动距离大于等于20[mm]),则机器人会判断因为工作台不存在,而发生异常并停止动作。
另外,在操作完成后,该示例使用力觉监视器功能测量力觉传感器值,并测量在操作过程中施加的最大力。
工具坐标系在夹具末端设定,夹具的正向是Tlz轴方向。
样例程序
Function PressSample_Main
Real rVar(8)
Integer iVar
Motor On
Go P0 '转到操作开始位置
PressSample_PropertySetting '设置属性
FSet FS1.Reset '重置力觉传感器
Trap 1, FT1 Call PressSample_EHandle '开始监视过大的力
FSet FM1.PeakForceClear, True, True, True, False, False, False, True, False
'开始计算峰值
Till FMR1 '设置当超出预期移动范围时的动作停止条件
FCKeep FC1 Till, 10 '力控制功能执行10秒
Print "Motion End"
FGet FM1.Forces, rVar() '获取力觉传感器值
Print "Force Fz:", rVar(FG_FZ), ", Fmag:", rVar(FG_FMAG)
FGet FM1.PeakForces, rVar() '获取峰值
Print "PeakForce Fz:", rVar(FG_FZ), ", Fmag:", rVar(FG_FMAG)
FGet FMR1.Triggered, iVar '获取运动限制的结果
If iVar = True Then '被限制时显示Overrun错误
Print "Overrun Error"
EndIf
Fend
Function PressSample_PropertySetting
FSet FCS1.Position, 0, 0, 30 '力坐标系的原点是Z30 mm
FSet FCS1.Orientation, FG_TOOL '方向与工具坐标系对齐
FSet FC1.CoordinateSystem, FCS1 '指定已定义的力坐标1
FSet FC1.Enabled, False, False, True, False, False, False
' 仅为Fz方向启用力控制功能。
FSet FC1.Fz_TargetForce, -20 '按压20 N
FSet FC1.Fz_Spring, 0 '虚拟弹性系数为0
FSet FC1.Fz_Damper, 10 '虚拟阻尼系数为10
FSet FC1.Fz_Mass, 10 '虚拟质量系数为10
FSet FT1.ForceSensor, 1 '指定力觉传感器1
FSet FT1.CoordinateSystem, FCS1 '指定已定义的力坐标1
FSet FT1.TriggerMode, FG_FORCE '监视力
FSet FT1.Fmag_Axes, FG_XYZ
FSet FT1.Enabled, False, False, False, False, False, False, True, False
' 仅启用Fmag
FSet FT1.Fmag_Polarity, FG_OUT '触发器检测值何时超出阈值范围
FSet FT1.Fmag_Levels, 0, 100 'Fmag的范围是0到100
FSet FM1.ForceSensor, 1 '指定力觉传感器1
FSet FM1.CoordinateSystem, FCS1 '指定已定义的力坐标1
FSet FMR1.TriggerMode, FG_REL_TOOL '指定工具相对模式
FSet FMR1.PosEnabled, False, False, True, False, False
'仅在Z方向有效
FSet FMR1.PosZ_Levels, -20, 20 'Z值范围为-20mm~20mm
FSet FMR1.PosZ_Polarity, FG_OUT '当超出阈值范围时限制有效
FSet FMR1.ForceSensor, 1 '指定力觉传感器1
FSet FMR1.CoordinateSystem, FCS1 '指定已定义的力坐标1
Fend
Function PressSample_EHandle
Real rVar(8)
FGet FM1.PeakForces, rVar() '获取峰值
Print "Error Handle"
Print "PeakForce Fz:", rVar(FG_FZ), ", Fmag:", rVar(FG_FMAG)
AbortMotion All '中止机器人动作,并将其置于错误状态
Fend
说明
- 执行PressSample_Main函数可将机器人移动到操作开始位置。
- 调用PressSample_PropertySetting并执行属性的设置。
但是,也可以提前在GUI的力觉编辑器中配置属性的设定。为此,您不需要调用PressSample_PropertySetting。 - 设置力坐标对象。对于力觉坐标系,在示例中指定Z30 [mm]位置,以便在工具坐标系中指定工件边缘位置。方向与工具坐标系的方向相同。
- 设置压力控制对象。将FCS1指定为要在其中执行力控制功能的坐标系。为目标力指定负值,因为压装操作在FZ的正向执行。设定虚拟弹性系数、虚拟阻尼系数和虚拟惯性系数。此示例在虚拟弹性系数中设定了“0”,因此机器人不具有虚拟“弹性”,并且会继续移动直到达到目标力为止。此外,这里为虚拟阻尼系数和虚拟惯性系数使用了稳定参数。要加快操作速度,请逐渐减小这些值以调整它们。但是,减小这些值会增加力过冲情况。
- 设置力触发器对象。指定要使用的力觉传感器编号,以及要在其中执行力觉触发器功能的坐标系。在TriggerMode属性中指定一个力,以监视过大的力。指定X、Y和Z,因为要监视的复合力使用所有轴(Fx到Fz)进行计算。为Fmag范围指定0到100 [N]以将过大的力设为100 [N],并进行配置以监视值是否超出该范围。
- 设置力监视器对象。指定要用于测量的力觉传感器编号和坐标系。
- 设置运动限制对象。机器人会根据(a)和(b)的设定,沿工具坐标系的+Z方向移动。在本示例中,当移动距离超过20mm时,则将指定未检测到贴合对象的动作。在TriggerMode中指定工具相对模式,以检测工具坐标系中的移动距离。Enabled中仅使PosZ有效,以检测Z方向。Z方向的范围指定为-20~20[mm],设定监控是否超出此范围。
- 在使用力功能之前重置力觉传感器。
- 在Trap中指定力触发器对象,并执行力触发器功能。这样,将监视过大的力。
- 在Till条件中指定运动限制对象。
- 计算在操作过程中施加的力的峰值。
- 执行力控制功能10秒。执行中若判断已达成Till条件中指定的力觉动作限制条件时,则中止动作。
- 获取并显示力觉传感器的当前值和峰值。在此示例中,仅显示值。这些值可用于认定操作是通过还是失败,还可用于使处理分叉。
- 获取运动限制的结果。在本示例中,如果满足条件,则仅将错误显示为溢出可以执行恢复处理。
- 如果在操作过程中检测到过大的力,程序将中止,并且执行PressSample_EHandle函数的中断。该处理将获取并显示在操作过程中施加的力的峰值,同时机器人动作将中止,并进入错误状态。在此示例中,机器人已进入错误状态,但也可以在发生错误时执行重试等处理。
← 运动限制功能的SPEL+编程 教程 →