ID : 2836
TrackPrepareData
功能
在视觉传感器检测的多个工件数据中,删除跟踪缓冲区中已存在的数据,返回从下流侧的数据开始依次重新排列的数据组。
这是通过TrackSetVision设置到跟踪缓冲区前进行重复数据删除和重新排列的函数,返回值直接成为TrackSetVision的自变量。
此指令对Ver.2.1.*以上的版本有效。
格式
TrackPrepareData (传送带编号, 工件检测数, 传感器检测坐标 [, 用户数据 [, 属性数据] ])
指定项目
- 传送带编号
-
使用整数型数据指定需使用的传送带编号(1~16)。
- 工件检测数
-
数值与设置到TrackSetVision的工件检测数的值相同。通过整数型数据指定通过1次执行保存到跟踪缓冲区中的工件个数。
如果输入负值,变成不需要I/O的触发输入的内部触发模式。
发现与跟踪缓冲区的数据重复的数据时,在返回值中减去该数(负数时执行加法)。值 内容 正值 用正值设定视觉传感器检测的工件数。
需要接收视觉传感器的I/O输入,事前保存传送带的编码器值。0 错误 负值 用负值设定想依据内部触发设定的工件数。
不需要视觉传感器的I/O输入,保存该指令执行时的传送带的编码器值。 - 传感器检测坐标
-
数值与设置到TrackSetVision的传感器检测坐标的值相同。指定与工件检测数相同的视觉传感器检测坐标。指定方法有以下3种。
发现与跟踪缓冲区的数据重复的数据时,在返回值中删除该坐标。另外,有多个数据时,返回值的顺序从下游侧开始重新排列。数据型 内容 矢量型 工件检测数为1个时,可指定。 变体(Variant)型的1次排列 工件检测数为1个以上时,可指定。
通过矢量型设定排列的各要素。矢量型的1次排列 工件检测数为1个以上时,可指定。
通过矢量型设定排列的各要素。 - 用户数据
-
数值与设置到TrackSetVision的用户数据的值相同。指定方法请参照“TrackSetVison”。
可省略。省略时为“-1”。输入负值时,则进行与省略时相同的处理。
返回值变为与数据重新排列对应的值。 - 属性数据
-
数值与设置到TrackSetVision的属性数据的值相同。指定方法请参照“TrackSetVison”。
可省略。省略时为“-1”。
返回值变为与数据重新排列对应的值。
返回值
项目 | 内容 |
---|---|
工件检测数 | 设置到TrackSetVision的工件检测数的值。以减去重复的数据个数。 |
传感器检测坐标 | 设置到TrackSetVision的传感器检测坐标的值。删除重复的数据,已按照从下游侧开始重新排列的顺序设置。 |
用户数据 | 设置到TrackSetVision的用户数据的值。与数据重新排列对应的值被设置。 |
属性数据 | 设置到TrackSetVision的属性数据的值。与数据重新排列对应的值被设置。 |
结合指定项目,通过变体(Variant)型返回工件检测数、传感器检测坐标、用户数据、属性数据。
指定项目 | 返回值 | |||
---|---|---|---|---|
工件检测数 | 传感器检测坐标 | 用户数据 | 属性数据 | |
传送带编号、 工件检测数、传感器检测坐标 | ◯ | ◯ | -1 | -1 |
传送带编号、 工件检测数、传感器检测坐标、用户数据 | ◯ | ◯ | ◯ | -1 |
传送带编号、 工件检测数、传感器检测坐标、用户数据、属性数据 | ◯ | ◯ | ◯ | ◯ |
指定的传感器检测坐标在跟踪缓冲区1个也不能保存时,“数据个数”为“0”,返回传感器检测坐标、用户数据、属性数据为“VT_EMPTY”的变体(Variant)型数据。
解说
在视觉传感器检测的多个工件数据中,删除跟踪缓冲区中已存在的数据,返回从下流侧的数据开始依次重新排列的数据组。
这是通过TrackSetVision设置到跟踪缓冲区前进行重复数据删除和重新排列的函数,返回值直接成为TrackSetVision的自变量。
相关项目
注意事项
传送带及圆形跟踪专用指令。
应用示例
视觉传感器检测出图像坐标“x=100[pixel], y=10[pixel]”、朝向“θ=30[deg]”的工件1
Dim visPos1 As Variant
visPos1 = Array(100, 10, 30)
视觉传感器检测出图像坐标“x=100[pixel], y=200[pixel]”、朝向“θ=0[deg]”的工件2
Dim visPos2 As Variant
visPos2 = Array(100, 200, 0)
视觉传感器检测出图像坐标“x=10[pixel], y=200[pixel]”、朝向“θ=45[deg]”的工件3
Dim visPos3 As Variant
visPos3 = Array(10, 200, 45)
视觉传感器检测到的3个工件,跟踪缓冲区的重复检查
Dim visPreparePos As Variant
visPreparePos = TrackPrepareData (1,3, Array(visPos1, visPos2, visPos3), Array(1, 2, 3), Array(1, 1, 1))
指定用户数据和属性,将不重复的工件保存到跟踪缓冲区
TrackSetVision 1, visPreparePos (0), visPreparePos (1), visPreparePos (2), visPreparePos (3)
事例
为了用2台机器人交互进行跟踪,将保存在跟踪缓冲区的数据的用户数据交替保存为1和2的方法
' 传感器检测坐标的取得
Dim visPos1 As Variant
visPos1 = Array(100, 10, 30)
Dim visPos2 As Variant
visPos2 = Array(100, 200, 0)
Dim visPos3 As Variant
visPos3 = Array(10, 200, 45)
' 取得跟踪缓冲区中没有重复数据的传感器检测坐标
Dim visPreparePos As Variant
visPreparePos = TrackPrepareData (1,3, Array(visPos1, visPos2, visPos3))
' 结合跟踪缓冲区中没有重复数据的数据个数,创建用户数据
' 将用户进行处理的函数作为CreateUserData另行定义
Dim vntUserData As Variant
vntUserData = CreateUserData(visPreparePos (0))
' 将数据保存到跟踪缓冲区
TrackSetVision 1, visPreparePos (0), visPreparePos (1), vntUserData
' [用户描述]
' 设定用户数据的处理
' [out] vntUserData : 用户数据
Function CreateUserData( ByVal workNum As Integer ) As Variant
' --------设定用视觉传感器检测出的工件用户数据--------
CreateUserData= CreateArray(workNum, VT_I4)
End Function
ID : 2836