三点定圆心编的园找中程式
数控cnc宏程吧
全部回复
仅看楼主
level 7
犀利民 楼主
主程式
O1
#100=54 (G54~~G59)
#199=0 (分中棒刀号)
M98 P8899
M30
%
副程式
O8899

#100=#
100
IF[
#100LT54]THEN#
100=54
IF[
#100GT59]THEN#
100=54
G5.1Q0.
T#199 M6
M3S600
N10
#111=0
#121=0
#131=0
N1
IF[#111NE0]GOTO2
M0
#111=#5021
#112=#5022
GOTO1
N2
IF[#121NE0]GOTO3
M0

#121=#
5021

#122=#
5022
#180=0
IF[#121EQ
#111]THEN#
180=#180+1
IF[#122EQ
#112]THEN#
180=#180+1
IF[#180EQ2]THEN#121=0
GOTO2
N3
IF[#131NE0]GOTO4
M0

#131=#
5021

#132=#
5022
#180=0
IF[#131EQ
#121]THEN#
180=#180+1
IF[#132EQ#122]THEN#180=#180+1
IF[#180EQ2]THEN#131=0
GOTO3
#180=1
IF[#131EQ
#121]THEN#
180=#180+1
IF[#131EQ
#111]THEN#
180=#180+1
IF[#180EQ3]THEN#131=0
GOTO3
#180=1
IF[#132EQ
#112]THEN#
180=#180+1
IF[#132EQ#122]THEN#180=#180+1
IF[#180EQ3]THEN#131=0
GOTO3
N4
#170=#121*#121-#111*#111+#122*#122-#112*#112
#171=#131*#131-#111*#111+#132*#132-#112*#112
#182=[#131-#111]*#170-[#121-#111]*#171
#183=2*[#112-#132]*[#121-#111]-[#131-#111]*[#112-#122]*2
#102=#182/#183 (Y)
#101=[#170+[#112-#122]*2*#102]/[[#121-#111]*2] (X)
#190=5201
#191=5202
#[#190-[53-#100]*20]=#101
#[#191-[53-#100]*20]=#102
#500=#101
#501=#102
#502=ABS[SQRT[[#111-#101]*[#111-#101]+[#112-#102]*[#112-#102]]](R)
M5
G0G91Z100.
G0G90G#100X0.Y0.
M99
%
2017年05月24日 10点05分 1
level 7
犀利民 楼主
2017年05月24日 10点05分 2
level 7
犀利民 楼主
之所以把草稿弄上去,一方面是方便大家看看这个是怎么出来的,一方面是防止有人说我是搬运工
2017年05月24日 10点05分 3
2017年05月24日 11点05分
level 7
犀利民 楼主
%
O8899

#100=#
100
IF[
#100LT54]THEN#
100=54
IF[
#100GT59]THEN#
100=54
/↑检测坐标系是否在G54到G59之间,超出时默认到G54
G5.1Q0.
T#199M6
M3S600
/↑换出分中棒,启动
N10
#111=0
#121=0
#131=0
/↑初始化三个碰点X值
N1
IF[#111NE0]GOTO2
M0
#111=#5021
#112=#5022
GOTO1
/↑N1到此处之间取第一点坐标,记录XY机械值到#111和#112中,碰好数时按启动
N2
IF[#121NE0]GOTO3
M0

#121=#
5021

#122=#
5022
#180=0
IF[#121EQ
#111]THEN#
180=#180+1
IF[#122EQ
#112]THEN#
180=#180+1
IF[#180EQ2]THEN#121=0
GOTO2
/↑N2到此处之间取第二点坐标,记录XY机械值到#121和#122中,并判断是否与第一点重合(如果重合不会继续向下执行,重新碰第二点数后按启动即可,下同)
N3
IF[#131NE0]GOTO4
M0

#131=#
5021

#132=#
5022
#180=0
IF[#131EQ
#121]THEN#
180=#180+1
IF[#132EQ#122]THEN#180=#180+1
IF[#180EQ2]THEN#131=0
GOTO3
/↑N3到此处之间取第三点坐标,记录XY机械值到#131和#132中,并判断是否与第二点重合(同上)
#180=1
IF[#131EQ
#121]THEN#
180=#180+1
IF[#131EQ
#111]THEN#
180=#180+1
IF[#180EQ3]THEN#131=0
GOTO3
/↑判断三个点X是否相同,相同的话重新碰第三点
#180=1
IF[#132EQ
#112]THEN#
180=#180+1
IF[#132EQ#122]THEN#180=#180+1
IF[#180EQ3]THEN#131=0
GOTO3
/↑判断三个点Y是否相同,相同的话重新碰第三点
N4
#170=#121*#121-#111*#111+#122*#122-#112*#112
/↑草稿中的“B”
#171=#131*#131-#111*#111+#132*#132-#112*#112
/↑草稿中的“C”
#182=[#131-#111]*#170-[#121-#111]*#171
#183=2*[#112-#132]*[#121-#111]-[#131-#111]*[#112-#122]*2
#102=#182/#183
/↑Y的最终运算式(X运算式代入后的)
#101=[#170+[#112-#122]*2*#102]/[[#121-#111]*2]
/↑X的最终运算式(把计算出的Y值代入后的)
#190=5201
#191=5202
#[#190-[53-#100]*20]=#101
#[#191-[53-#100]*20]=#102
/↑将计算出的中心坐标分别记录到指定的坐标系XY中
/↑系统变量#5221是G54的X,#5222是Y,#5241是G55的X....
#500=#101
#501=#102
#502=ABS[SQRT[[#111-#101]*[#111-#101]+[#112-#102]*[#112-#102]]]
/↑碰完数后打开变量查看用,#500是坐标系X机械值,#501是Y机械值,#502是所碰园半径减去分中棒半径
M5
G0G91Z100.
G0G90G#100X0.Y0.
M99
%
2017年05月24日 11点05分 4
level 11
一下看不完,先收着了
2017年05月24日 21点05分 5
看看还有可以精简的地方不[黑线]
2017年06月04日 19点06分
level 10
楼主非常厉害👍
2017年06月23日 06点06分 6
level 7
犀利民 楼主
经上机测试,“N4”放错了位置,应该放在第一个“GOTO 3”的下一行,否则无法检测三点的X和Y是否分别重合
2017年06月23日 19点06分 7
三菱m64s系统到g5.1q0.就报警是怎么回事?
2018年04月01日 02点04分
回复
cnc新手求帮
:三菱系统不需要G5.1 Q0,所以要删除那一行
2018年05月09日 19点05分
level 5
不知道怎么用,看不懂
2017年07月11日 12点07分 8
不是都已经备注了吗,按照备注自己在思考下结合实际不久会用了
2017年07月19日 10点07分
level 2
马上要去学习这个行业了!说实话心里挺纠结,我不知道我到什么时候能看懂你发的这些数据。唉╯﹏╰,自己努力吧!
2017年11月25日 03点11分 9
level 10
THEN表示什么
2017年12月21日 14点12分 10
“则” ,IF[条件] then ,意思就是如果条件成立 则怎么怎么
2017年12月23日 13点12分
level 1
你之前的一系列确认的程序 有必要写进去吗?
2018年02月11日 06点02分 12
这是一种写程序的习惯,就是要考虑全面,尽可能的避免一切可能造成错误的因素,如果少了那些确认,打个比方在同一个点上连续按了两下或者三下启动,那么出来的中心点会是对的吗?
2018年05月09日 19点05分
level 10
大师帮忙看下是不是N4放这里
2018年05月10日 04点05分 13
不是,要放在第一个GOTO3的下一行
2018年05月11日 00点05分
你程序没抄全啊,这里说的GOTO3不是和IF连起来的那个,是单独一行的GOTO3
2018年05月11日 00点05分
@犀利民 多谢师傅,我再试试看[真棒]
2018年05月11日 01点05分
回复 阳光明媚🍼 :程序全可也放到GOTO3下面了,怎么出现死循环弄了两天都不行师傅帮我看下?或者给我发个改好的多谢!
2018年05月12日 08点05分
level 10
这样对吗师傅
2018年05月12日 08点05分 14
应该是这样了,手机上图片看的不是很清楚,反正只要没抄错误就对了,因为我自己用的就是这个
2018年05月16日 05点05分
@犀利民 这样子,上机出现死循环n3和n4段
2018年05月16日 06点05分
回复
cnc新手求帮
:恩,对头,这里还要删除一个部分,只用确认三个X或者三个Y不相等就行了,删除一个#180=1到下面的GOTO3的段落,然后在另一个段落的GOTO3上一行加入一个判断,就是当三点不等的时候要跳出到计算
2018年05月16日 06点05分
看下一楼
2018年05月16日 06点05分
level 7
犀利民 楼主
按图片上的修改,N4放到1那一行,在2那个位置加入一行 IF[#180 LT 3] GOTO5,在原来N4的位置输入N5,
2018年05月16日 06点05分 15
level 7
犀利民 楼主
2018年05月16日 06点05分 16
或者不想麻烦的话就把后两个GOTO3改成IF[#180LT3]GOTO3,第一个后一行加入N4
2018年05月16日 06点05分
1 2 尾页