ID : 2285
TrackBufferSort
格式
TrackBufferSort 传送带编号, 排序类别1[, 排序类别2]
指定项目
- 传送带编号
-
使用整数型数据指定需使用的传送带编号(1~16)。
- 排序类别1
-
通过整数型数据指定以跟踪缓冲区内的全部数据为对象的排序类别。
如果切断电源,设定的排序类别返回到默认的设定值“0”。在排序类别1中,选择下述排序方法的组合。
- 是否通过用户数据实施排序
- 其他排序方法
针对各设定值组合排序方法的内容如下所述。
设定值:0
通过用户数据排序 排序方法 有 按照从下游到上游的顺序排序 按照用户数据从小到大的顺序排序后,按照从下游到上游的顺序排序具有相同用户数据的工件。
这是默认的排序方法。不执行TrackBufferSort指令时,按照该排序方法排序。
排序结果
如果为排序类别1设定0,按照以下那样的顺序排序工件。
设定值:1
通过用户数据排序 排序方法 无 按照从下游到上游的顺序排序 按照从下游到上游的顺序排序全部数据。
排序结果
如果为排序类别1设定1,按照以下那样的顺序排序工件。
设定值:2
通过用户数据排序 排序方法 有 针对传送带的动作方向,按照从左侧到右侧的顺序排序工件 按照用户数据从小到大的顺序排序后,针对传送带的动作方向,按照从左侧到右侧的顺序排序具有相同用户数据的工件。
排序结果
如果为排序类别1设定2,按照以下那样的顺序排序工件。
设定值:3
通过用户数据排序 排序方法 无 针对传送带的动作方向,按照从左侧到右侧的顺序排序工件 针对传送带的动作方向,按照从左侧到右侧的顺序排序全部数据。
排序结果
如果为排序类别1设定3,按照以下那样的顺序排序工件。
设定值:4
通过用户数据排序 排序方法 有 按照从上游到下游的顺序排序工件 按照用户数据从小到大的顺序排序后,按照从上游到下游的顺序排序具有相同用户数据的工件。
排序结果
如果为排序类别1设定4,按照以下那样的顺序排序工件。
设定值:5
通过用户数据排序 排序方法 无 按照从上游到下游的顺序排序工件 按照从上游到下游的顺序排序全部数据。
排序结果
如果为排序类别1设定5,按照以下那样的顺序排序工件。
设定值:6
通过用户数据排序 排序方法 有 针对传送带的动作方向,按照从右侧到左侧的顺序排序工件 按照用户数据从小到大的顺序排序后,针对传送带的动作方向,按照从右侧到左侧的顺序排序具有相同用户数据的工件。
排序结果
如果为排序类别1设定6,按照以下那样的顺序排序工件。
设定值:7
通过用户数据排序 排序方法 无 针对传送带的动作方向,按照从右侧到左侧的顺序排序工件 针对传送带的动作方向,按照从右侧到左侧的顺序排序全部数据。
排序结果
如果为排序类别1设定7,按照以下那样的顺序排序工件。
设定值:8
通过用户数据排序 排序方法 有 按照属性数据的数值从大到小的顺序排序 按照用户数据从小到大的顺序排序后,按照属性数据的数值从大到小的顺序排序具有相同用户数据的工件。
排序结果
如果为排序类别1设定8,按照以下那样的顺序排序工件。
设定值:9
通过用户数据排序 排序方法 无 按照属性数据的数值从大到小的顺序排序 按照属性数据的数值从大到小的顺序排序全部工件。
排序结果
如果为排序类别1设定9,按照以下那样的顺序排序工件。
设定值:10
通过用户数据排序 排序方法 有 按照属性数据的数值从小到大的顺序排序工件 按照用户数据从小到大的顺序排序后,按照属性数据的数值从小到大的顺序排序具有相同用户数据的工件。
排序结果
如果为排序类别1设定10,按照以下那样的顺序排序工件。
设定值:11
通过用户数据排序 排序方法 无 按照属性数据的数值从小到大的顺序排序 按照属性数据的数值从小到大的顺序排序全部工件。
排序结果
如果为排序类别1设定11,按照以下那样的顺序排序工件。
设定值:-1
通过用户数据排序 排序方法 无 无 不进行全部数据的排序,缓冲区内的排列不变。
只想通过排序类别2进行排序时,指定。
- 排序类别2
-
按照排序类别1实施了指定的排序后,指定想个别排序的数据和排序方法。
- 通过变体(Variant)型的1维数组指定以具有跟踪缓冲区内指定的用户数据的数据为对象的排序方法。可省略。
- 在排序类别1中不通过用户数据实施排序时(排序类别1的设定值: 1,3,5,7,9,11),不实施排序类别2中指定的排序。
- 各要素的值如下所述由“成为对象的用户数据”和“排序方法”构成,要素数通过2的整数型数据的1维数组指定。
排序类别2 = Array(Array(对象用户数据, 排序方法)[, Array(对象用户数据, 排序方法)[,…]])
设定值有以下的种类。
设定值 | 排序方法 |
---|---|
-1 | 不通过排序类别2实施排序。 |
0 | 按照从下游到上游的顺序排序工件 |
1 | 针对传送带的动作方向,按照从左到右的顺序排序工件 |
2 | 按照从上游到下游的顺序排序工件 |
3 | 针对传送带的动作方向,按照从右到左的顺序排序工件 |
4 | 按照属性数据从大到小的顺序排序工件 |
5 | 按照属性数据从小到大的顺序排序工件 |
执行例子
设定排序类别2进行排序时,为以下那样的程序。
如果执行该指令,如下那样排序。
解说
变更跟踪缓冲区内的数据的排列顺序。首先,依据第2自变量的排序类别1的设定,以跟踪缓冲区内的全部数据为对象,依据指定的排序类别重排数据。
设定了第3自变量的排序类别2时,进行上述的排序处理后,以跟踪缓冲区的具有指定的用户数据的组为对象,个别变更数据的排列顺序。
相关项目
TrackBufferDelete、 TrackBufferIndexes、 TrackBufferRead、 TrackCurBufferSort、 TrackPrepareData、 TrackSetSensor、 TrackSetVision、 TrackTargetPos、 传送带跟踪用指令、 圆形跟踪用指令
注意事项
- 传送带及圆形跟踪专用指令。
- 当跟踪缓冲区内的数据多时,数据的重排有时耗时长。
- 如果切断电源,排序类别1返回到默认的设定值,排序类别2被清空。
应用示例
- 以缓冲区内的全部数据为对象,设定排序类别。从排序的数据开头处,依次取出。
If I[50] = 1 Then
' 针对传送带的动作方向,从左到右排列
TrackBufferSort 1, 3
ElseIf I[50] = 2 Then
' 根据属性数据排序
TrackBufferSort 1, 9
Else
' 返回默认的设定 (沿传送带矢量方向排序)
TrackBufferSort 1, 0
End If
' 从已排序的数据开头依次取出
P[10] = TrackTargetPos(1, -1)
- 为每个用户数据设定排序类别。
' 整个缓冲区维持现在的设定不变
' 根据属性值,只对用户数据5的组内排序
' 针对传送带的动作方向,从左到右只排列用户数据1的组内
TrackBufferSort 1, -1, Array( Array( 5, 4 ), Array( 1, 1 ) )
- 不进行每个用户数据的排序。
' 不进行只对用户数据5的组内排序
' 不进行只对用户数据1的组内排序
TrackBufferSort 1, -1, Array( Array( 5, -1 ), Array( 1, -1 ) )
- 为特定的用户数据的组个别设定排序类别。从排序的数据开头处,依次取出。
' 整个缓冲区沿传送带矢量方向排序
'根据属性数据,只对用户数据5的组内排序
' 针对传送带的动作方向,从左到右只排列用户数据1的组内
TrackBufferSort 1, 0, Array(Array(5, 4), Array(1, 1))
' 关于用户数据5的组,从已排序的数据开头依次取出
P[10] = TrackTargetPos(1, -1, 5)
'....
' 关于用户数据1的组,从已排序的数据开头依次取出
P[10] = TrackTargetPos(1, -1, 1)
'....
' 沿传送带矢量方向,从已被排序的数据开头依次取出
P[10] = TrackTargetPos(1, -1)
ID : 2285