如图所示,在XY坐标是不规则的托盘,怎么实现输入一个点编号就能得到实际坐标值呢?
首先必须托盘内每个工位(放置工件)是很规则的,间隔误差小于工装最大误差!
为了方便理解,我又重新用CAD绘制了2种常用的托盘:
以上2种托盘,每种2个起始点不同,他们是怎么实现的?
设计思路:因为每个点,相对间距规则,所以相对机械坐标系X或Y方向的垂直点间距也是规则。找到各点的垂直点与起点的X方向或Y方向偏移值就可以得到该点所在机械坐标系位置。不需要使用过于复杂的数学函数算法,只需要使用加减乘除就可以实现了。
只要有点数学几何基础的相信看过上面图片,就知道怎么做了。
下面是我实现这个功能,做的程序:
定义3个点位坐标、X方向和Y方向数量和间距
格子左手前,算术如下:
c=|X2-X|/b
d=|Y2-Y|/b
e=|X1-X|/a
f=|Y1-Y|/a
g=商(n/b)
h=余(n/b)
'P10
X(P10)=e*1*(+1)+X
Y(P10)=f*1*(+1)+Y
'P11
X(P11)=e*2*(+1)+X
Y(P11)=f*2*(+1)+Y
'P20
X(P20)=e*3*(+1)+X
Y(P20)=f*3*(+1)+Y
'计算1-5排列坐标
IF 1<=n<=5 THEN
Xn=c*(n-1)*(-1)+X
Yn=d*(n-1)*(+1)+Y
ENDIF
'计算6-10排列坐标
IF 6<=n<=10 THEN
Xn=c*(10-n)*(-1)+X(P10)
Yn=d*(10-n)*(+1)+Y(P10)
ENDIF
'计算11-15排列坐标
IF 11<=n<=15 THEN
n1=n-11
Xn=c*(n1)*(-1)+X(P11)
Yn=d*(n1)*(+1)+Y(P11)
ENDIF
'计算16-20排列坐标
IF 16<=n<=20 THEN
Xn=c*(20-n)*(-1)+X(P20)
Yn=d*(20-n)*(+1)+Y(P20)
ENDIF
格子右手前,算术如下:
c=|X2-X|/b
d=|Y2-Y|/b
e=|X1-X|/a
f=|Y1-Y|/a
g=商(n/b)
h=余(n/b)
'P10
X(P10)=e*1*(-1)+X
Y(P10)=f*1*(-1)+Y
'P11
X(P11)=e*2*(-1)+X
Y(P11)=f*2*(-1)+Y
'P20
X(P20)=e*3*(-1)+X
Y(P20)=f*3*(-1)+Y
'计算1-5排列坐标
IF 1<=n<=5 THEN
Xn=c*(n-1)*(-1)+X
Yn=d*(n-1)*(+1)+Y
ENDIF
'计算6-10排列坐标
IF 6<=n<=10 THEN
Xn=c*(10-n)*(-1)+X(P10)
Yn=d*(10-n)*(+1)+Y(P10)
ENDIF
'计算11-15排列坐标
IF 11<=n<=15 THEN
n1=n-11
Xn=c*(n1)*(-1)+X(P11)
Yn=d*(n1)*(+1)+Y(P11)
ENDIF
'计算16-20排列坐标
IF 16<=n<=20 THEN
Xn=c*(20-n)*(-1)+X(P20)
Yn=d*(20-n)*(+1)+Y(P20)
ENDIF
c=|X2-X|/b
d=|Y2-Y|/b
e=|X1-X|/a
f=|Y1-Y|/a
g=商(n/b)
h=余(n/b)
'P8
X(P8)=e*1*(+1)+X
Y(P8)=f*1*(+1)+Y
'P14
X(P14)=e*1*(+1)+X
Y(P14)=f*1*(+1)+Y
'计算1-3排列坐标
IF 1<=n<=3 THEN
Xn=c*(n-1)*(-1)+X
Yn=d*(n-1)*(+1)+Y
ENDIF
'计算4-7排列坐标
IF 4<=n<=7 THEN
Xn=c*(7-n)*(-1)+X(P7)
Yn=d*(7-n)*(+1)+Y(P7)
ENDIF
'计算8-10排列坐标
IF 8<=n<=10 THEN
n1=n-8
Xn=c*(n1)*(-1)+X(P8)
Yn=d*(n1)*(+1)+Y(P8)
ENDIF
'计算11-14排列坐标
IF 11<=n<=14 THEN
Xn=c*(14-n)*(-1)+X(P14)
Yn=d*(14-n)*(+1)+Y(P14)
ENDIF
'计算15-17排列坐标
IF 15<=n<=17 THEN
n1=n-15
Xn=c*(n1)*(-1)+X(P15)
Yn=d*(n1)*(+1)+Y(P15)
ENDIF
'计算18-21排列坐标
IF 18<=n<=21 THEN
Xn=c*(21-n)*(-1)+X(P21)
Yn=d*(21-n)*(+1)+Y(P21)
ENDIF
以上程序相信没有人会去认真算,也不用认真看,最重要的是知道原理就行。