<< 向前        下一页 >>

ID : 789

Detect功能

Detect功能是指保存I/O信号输入时机器人坐标的功能。

输入的I/O信号为Hand I/O的输入信号或Mini I/O的输入信号。但是,不可指定Mini I/O的专用输入信号。

机器人坐标选择位置型连接型齐次变换型的数据,并保存至全局变量。

如果Detect功能执行“DetectOn”指令,则初始化指定端口的缓冲区并将功能设定为有效。功能有效时,将指定输入信号接通时的当前位置保存至缓冲区。如果执行“DetectOff”指令,则将缓冲区的数据保存至指定的全局变量并将功能设定为无效。

根据端口编号和边缘指定的组合,识别并分别创建缓冲区。

功能流程

1

执行“DetectOn”指令时功能为有效。

2

如果检测到指定的输入信号,则位置数据保存至内部的缓冲区。

3

执行“DetectOff”指令时,将缓冲区写入指定的全局变量。

Detect功能的样品程序1

Pick & Place。在Pick圆形工件前,通过臂前端安装的传感器获取工件的中心位置并进行位置校正。

<Pro1.pcs>

#Include "Chuck_Unchuck.pcs"
#Define Home P(200,0,200,180,0,180,-1)	'初始位置
#Define SenserToolNum 10	'传感器的工具编号
Sub Main
	Dim PickPos As Position	'工件(Pick)的位置
	Dim PlacePos As Position	'工件(Place)的位置
	PickPos = P(300,0,100,180,0,180,-1)	'大致位于附近但存在偏移
	PickPos = GetCenter(PickPos)	'位置校正程序
	if PickPos = P(0,0,0,0,0,0,-1) Then Exit Sub
	TakeArm
	
	'Pick
	Approach P, PickPos, 50
	Move L, PickPos
	Call Func_Chuck(On)	'夹持
	Depart L, 50, Speed = 50
	
	'Place
	Approach P, PlacePos, 50, Speed = 50
	Move L, PlacePos, Speed = 50
	Call Func_Chuck(Off)	'放置
	Depart L, 50
	Move P, Home
End Sub

Function GetCenter(ByVal pPos As Position) As Position
	'自变量pPos大致为基准位置(位于圆形工件上)
	'在从该位置距X、Y轴方向+/-100mm的范围内动作。
	'触发器I/O为128号端口
	'获取个数保存变量:I[10]
	Dim pGloNum As Integer = 10	'传感器位置获取用P型全局变量编号
	Dim xPos As Single
	Dim yPos As Single
	Dim LastPos As Position	'保存之前的位置
	Dim LastToolNum As Integer	'保存之前的Tool编号
	LastPos = CurPos
	LastToolNum = CurTool
	I[10] = 0	'RESET获取个数保存变量
	TakeArm
	ChangeTool SenserToolNum	'更改为传感器用工具坐标

	'X方向的传感
	Move P, Dev(pPos, P(-100,0,0))
	DetectOn 128, 257, pGloNum, 2, 10, 2	'DETECT功能On
	Draw L, V(200,0,0), Speed = 10	'向X方向移动
	DetectOff 128, 2	'DETECT功能Off
	If I[10] <> 2 Then GoTo NotSense	'如果不能获取则中止
	xPos = 0.5 * (PosX(P[pGloNum + 0]) + PosX(P[pGloNum + 1]))
	
	'Y方向的传感
	Move P, Dev(pPos, P(0,-100,0))	
	DetectOn 128, 257, pGloNum, 2, 10, 2	'DETECT功能On
	Draw L, V(0,200,0), Speed = 10	'向Y方向移动
	DetectOff 128, 2	'DETECT功能Off
	If I[10] <> 2 Then GoTo NotSense	'如果不能获取则中止
	yPos = 0.5 * (PosY(P[pGloNum + 0]) + PosY(P[pGloNum + 1]))
	
	'在原状态
	ChangeTool LastToolNum
	Move P, LastPos

	LetX pPos = xPos	'代入x
	LetY pPos = yPos	'代入y
	GetCenter = pPos
	Exit Function

NotSense:	'不能感应时返回初始值
	GetCenter = P(0,0,0,0,0,0,-1)
	
End Function

Detect功能的样品程序2

通过夹治具上安装的传感器检查有无工件后再获取工件的程序。

<SearchAndPickPlace.pcs>

'!TITLE “DETECT功能的样品程序”

#Define CountIValNum 3
#Define WorkPosPValNumStart 20
#Define pcsPosition 257
#Define SenserIONum 128
#Define MaxCount 10
#Define ScanStartPos P(800.00, 0.00, 50, -104.02, 90.00, -104.02, 5)
#Define ScanEndPos P(800.00, 0.00, 600, -104.02, 90.00, -104.02, 5)
#Define SenserToolNum 3
#Define HandToolNum 4
#Define Home P(466.64, 0.00, 558.33, 100.47, 90.00, 100.47, -1 )
#Define PlacePos P(0.00, 800.00, 100.00, 42.59, 90.00, 133.40, 1 )
'#Include "Chuck_Unchuck"

Sub Main
	Dim n As Integer	' 计数器

	Takearm
	Move P, Home

	' SCAN
	Changetool SenserToolNum
	Move P, ScanStartPos
	DetectOn SenserIONum, pcsPosition, WorkPosPValNumStart, MaxCount, CountIValNum
	Move L, ScanEndPos,speed = 10 
	DetectOff 128
	
	' 不能正常扫描时
	If i[CountIValNum] = -1 Then GoTo ScanErr
	
	'分别获取可扫描的位置
	For n = WorkPosPValNumStart To (WorkPosPValNumStart + i[CountIValNum] -1)
		Call PickAndPlace(p[n])
	Next

	Exit Sub	

ScanErr:	'不能正常Scan时的处理
	'Statements
End Sub

Sub PickAndPlace(ByVal TargetPos As Position)
	Dim LastToolNum As Integer
	LastToolNum = CurTool
	Dim LastWorkNum As Integer
	LastWorkNum = CurWork

	TakeArm
	ChangeTool HandToolNum

	' PICK
	Approach p, TargetPos, 30
	Move L, TargetPos, Speed = 20
	Call FuncChuck(On)
	Depart L, 350 , Speed = 20

	' PLACE
	Move L, PlacePos
	Call FuncChuck(Off)
	Depart L, 30 , Speed = 20
	
	ChangeTool LastToolNum
	ChangeWork LastWorkNum
	Move P, Home

End Sub

相关项目

DetectOnDetectOffHand I/OMini I/O

ID : 789

<< 向前        下一页 >>