ID : 2981
[传感器跟踪]自由曲线插补的编程示例
以下阐述通过传感器跟踪执行自由曲线插补动作(TrackMove S)时的编程示例。以跟踪范围中收纳的长工件为对象。
应用示例
可通过以下3个程序实现传感器跟踪中的自由曲线插补动作。
1.主程序(FreeCurveSensorTracking.pcs (PCS:354B))
清空指定了传送带编号的跟踪缓冲区,开始传感器发出信号的触发器检测。
TrackInitialize ConvNum, 0
并列执行工件检测程序、跟踪动作程序。
Run FreeCurveVisionSensor
Run FreeCurveTracking
2.工件检测程序(FreeCurveSensor.pcs (PCS:2KB))
检测上升沿。
Wait IO[IONum] = OFF
Wait IO[IONum]
将最新的传感器检测坐标(编码器值)添加到workNum所指定个数的跟踪缓冲区。
此时,可将workNum所指定个数的用户数据作为Variant型排列进行附加。
TrackSetSensor ConvNum, workNum, arrayUser
3.跟踪动作程序(FreeCurveTracking.pcs (PCS:3KB))
通过TrackStart指令,开始跟踪前向初始位置移动。
请注意,在跟踪中,如果执行Move指令等常规动作指令,将中断跟踪动作。
Move P, P[HomePos]
每次检测到工件时,用于执行跟踪、自由曲线插补动作的主循环。
将内部I/O的ON信号设定为循环继续的条件,以便可在中途结束循环。
Do
P[10] = TrackTargetPos(1)
...
TrackApproach P, P[FirstPathPointWork], ApproachLength
TrackMove S, P[TargetPos], PathNum
...
LOOP UNTIL IO[AbortIONum] = ON
循环内的处理。
首先,从跟踪缓冲区调取工件数据,将其设定为跟踪对象工件。
未检测到工件时,在此行待机,直至检测到工件且跟踪缓冲区装满数据。
P[TargetPos] = TrackTargetPos(ConvNum)
将上述得到的传送带基准坐标转换为基础坐标系的位置。
P[TargetPosBase] = ConvertPosWork( P[TargetPos], -1, 0 )
获取路径的第1点的坐标,转换为当前的工件坐标的位置。
P[FirstPathPoint] = GetPathPoint( PathNum, 1 )
P[FirstPathPointWork] = ConvertPosWork( P[FirstPathPoint], P[TargetPosBase], -1 )
指示跟踪模式开始。在执行此指令阶段,机器人尚未开始移动。
执行TrackApproach指令等跟踪动作指令并开始初次移动。
TrackStart ConvNum
一边为与传送带等速执行跟踪动作,一边朝相距第1个路径点接近长度的上方接近位置移动。
TrackApproach P, P[FirstPathPointWork], ApproachLength
一边为与传送带等速执行跟踪动作,一边靠近第1个路径点。
TrackMove P, P[FirstPathPointWork]
开始自由曲线插补动作。
TrackMove S, P[TargetPos], PathNum
一边为与传送带等速执行跟踪动作,一边从跟踪对象工件朝上方离开离开长度。
TrackDepart P, DepartLength
指示跟踪模式结束。结束传送带追踪动作并减速停止。
执行此指令前,工件超出跟踪范围下游下限时,将发生错误。
TrackStop
将挑选的工件搬运至排出位置。
Approach P, P[EjectPos], ApproachLength
ID : 2981