<< 向前        下一页 >>

ID : 2223

长条工件的编程示例

传感器跟踪时的编程示例如下所示。
以超过跟踪范围的长工件为对象。

如果为长条工件,按照跟踪范围的长度将工件总长分割为N个领域,分别执行常规工件的传感器跟踪。

这个编程示例从Ver1.10.*之后可使用。

应用示例

与常规工件相同,可通过以下3个程序执行长条工件的传感器跟踪。

  1. “主程序”

    执行与传送带跟踪相关的初始化处理的程序。

  2. “工件检测程序”

    执行工件位置检测并保存至传送带跟踪缓冲区的程序。

  3. “跟踪动作程序”

    跟踪缓冲区读取检测的工件位置,并执行跟踪、挑选动作的程序。

1.主程序(SensorTracking.pcs (PCS:280B)

清空传送带1的跟踪缓冲区,开始传感器发出信号的触发器检测。

TrackInitialize 1, 0

并列执行工件检测程序、跟踪动作程序。

Run Sensor
Run Tracking

2.工件检测程序(Sensor.pcs (PCS:2KB)

检测上升沿。

Wait IO[48] = OFF
Wait IO[48]

将最新的传感器检测坐标(编码器值)添加到N个跟踪缓冲区
如下图所示,如果按照跟踪范围的长度300[mm],将工件总长为1500[mm]的工件分割为5部分,则“N=5”。

TrackSetSensor 1, I[10], arrayUser

3.跟踪动作程序(Tracking.pcs (PCS:3KB)

通过TrackStart指令,开始传送带跟踪前向初始位置移动。
请注意,在传送带跟踪时,如果执行Move指令等常规动作指令,将中断跟踪动作。

Move P, P[50]

每次检测到工件时,用于执行跟踪、挑选动作的主循环。
将内部I/O的ON信号设定为循环继续的条件,以便可在中途结束循环。
长条工件时,由于将1个工件分割为了N个领域,因此每执行1次传感器检测将进行N次循环。
需事先通过局部变量保持循环次数,以便判断处理到第几个分割领域。

Dim divCount As Integer
divCount = 0
Do
    divCount = divCount + 1
    If (divCount > I[10]) Then
        divCount = 1
    End If

    P[10] = TrackTargetPos(1, -1, -1, 4)

    ...

    TrackApproach P, P[10], 50

    ...

LOOP UNTIL IO[128] = ON

循环内的处理。

首先,从传送带跟踪缓冲区调取工件数据,将其设定为跟踪对象工件
未检测到工件时,在此行待机,直至检测到工件且传送带跟踪缓冲区装满数据。

    P[10] = TrackTargetPos(1, -1, -1, 4)

如下图所示,对分割的作业领域中(2)之后的领域执行传感器跟踪时,因工件前端已经超过跟踪范围下游下限,因此无法识别为跟踪对象工件
需将TrackTargetPos的模式设定(第4自变量)的模式3设定为有效,以识别(2)之后的领域。

通过“TrackTargetPos”指令,仅在设定为跟踪对象工件的状态下,对于位于上图(1)领域的工件前端位置进行机器人跟踪动作。因此,根据当前的分割领域,需将跟踪对象工件传送带矢量反方向偏移。可通过TrackConveyorVector指令获取传送带矢量。使用可通过TrackCurStarArea指令获取的跟踪范围的长度和当前循环次数计算偏移量。

    Dim curDivNo As Integer
    curDivNo = (divCount - 1)

    Dim trckArea As Variant
    Dim trckRange As Integer
    trckArea = TrackCurStartArea(1)
    trckRange = (trckArea(1) - trckArea(0))
    P[10] = P[10] - (convVec * (curDivNo * trackRange))

指示跟踪模式开始。在执行此指令阶段,机器人尚未开始移动。
执行TrackApproach指令等跟踪动作指令并开始初次移动。
跟踪对象工件超过跟踪范围下游下限时,默认将发生错误。

    TrackStart 1, 2

如上图所述,对分割的作业领域中(2)之后的领域执行传感器跟踪时,由于工件前端已经超过跟踪范围下游下限,因此需通过TrackStart指令的选项设定(第2自变量)将选项2设定为有效,并事先将此错误的发生设定为无效。

跟踪对象工件各分割领域的开头位置进入跟踪范围内之前进行等待。

    Wait TrackInRange(1, (-trckRange * curDivNo)), 10000, timeoutFlg

在默认情况下,“TrackInRange”指令对跟踪对象工件的开头位置进行判断。需随时在偏移量(第2自变量)中设定到各分割领域开头位置的偏移量,以便对各分割领域的开头位置进行判断。使用可通过TrackCurStarArea指令获取的跟踪范围的长度和当前循环次数计算偏移量。

执行追踪动作的同时向距离跟踪对象工件上方50mm的趋近位置移动,以便与传送带等速。

    TrackApproach P, P[10], 50

执行追踪动作的同时向跟踪对象工件接近,以便与传送带等速。

    TrackMove L, P[10]

执行追踪动作的同时在工件上描绘四边形,以便与传送带等速。

    TrackMove L, P[10] + P(0, 50, 0)
    TrackMove L, P[10] + P(-100, 50, 0)
    TrackMove L, P[10] + P(-100, -50, 0)
    TrackMove L, P[10] + P(0, -50, 0)
    TrackMove L, P[10]

执行追踪动作的同时向距离跟踪对象工件上方50mm的位置偏离,以便与传送带等速。

    TrackDepart P, 50

指示跟踪模式结束。结束传送带追踪动作并减速停止。

    TrackStop

将挑选的工件搬运至排出位置。

    Approach P, P[52], 50

ID : 2223

<< 向前        下一页 >>