Cao Thủ Lập Trình

Author
xin hỏi tất cả anh em trên diễn đàn đã ai lập trình cnc kiểu này chưa??<XIN GIAO LƯU>
Code:
<genkidama.nc>
( truong genkidama )
#3001=0. 
#853=#3011 
#854=#3012 
#11190=0 
(Date : Sat Feb 27 16:12:49 2016)
M86
M91
M27
 
 
 
T11M06 
H11
M300T11
 
 
T15M06 
H15
M300T15
 
M31L4
 
 
 
 
(---- MACHINE TIME CHECK START ----) 
 
IF[#851EQ0]THEN#851=#853 
IF[#852EQ0]THEN#852=#854 
#855=#853-#851 
IF[#855EQ1]THEN#856=240000 
IF[#855GT1]THEN#856=480000 
#864=FIX[#854*0.0001]
#865=FIX[#852*0.0001]
IF[#864GT#865]THEN#852=#852+004000 
#857=#854-#852 
IF[#857EQ0]THEN#800=12 
IF[#857LT0]THEN#857=[#856+#854]-#852 
 
IF[#857GT002000]THEN#800=12
 
(---- MACHINE TIME CHECK END ----) 
 
 
 
#11151=#11001
#11152=#11002
#11153=#11003
#11154=#11004
#11155=#11005
#11156=#11006
#11157=#11007
#11158=#11008
#11159=#11009
#11160=#11010
#11161=#11011
#11162=#11012
#11163=#11013
#11164=#11014
#11165=#11015
#11166=#11016
#11167=#11017
#11168=#11018
#11169=#11019
#11170=#11020
 
 
 
(-------TOOL.CHECK-------) 
IF[#800GE11]GOTO11 
GOTO99 
N11
 
 
(TOOL.MEASURE) 
 
T01M06 
M200 
 
T02M06 
M200 
 
T03M06 
M200 
 
T04M06 
M200 
 
T05M06 
M200 
 
T06M06 
M200 
 
T07M06 
M200 
 
T08M06 
M200 
 
T09M06 
M200 
 
T10M06 
M200 
 
T11M06 
M200 
 
T12M06 
M200 
 
T13M06 
M200 
 
T14M06 
M200 
 
T15M06 
M200 
 
T16M06 
M200S1000B3D16R12.0Z6. 
 
IF[#13016LT6.50]GOTO1
IF[#13016GT6.60]GOTO1
 
#3000=1(T16.DIA.CHECK) 
 
 
 
 
N1 
 
 
(--- PROBE MAEASURE START ---) 
IF[#11190NE0]THEN#11190=0
N701 
G5.1Q0 
G91G28Z0.
G49M6T20 
M101(LASER SELECT) 
G04X0.1
G04X0.1
#11191=#5041-#5021 
#11191=#524+#11191 
 
#11192=#5042-#5022 
#11192=[[#522+#523]/2]+#11192
 
#11193=#5043-#5023 
#11193=#11193+#520 
G90G00X#11191Y#11192 
 
#11194=#11193+3.0
G01G43G90G31F3000H200Z#11194 
G04X0.01 
G04X0.01 
G04X0.01 
 
(------- LASER OPEN CHECK START -------) 
#11181=#5043 
#11182=0.1 
G31G91Z[#11182]F50 
#11183=#5043 
IF[ABS[#11181-#11183]LT0.005]GOTO12
 
GOTO703
 
(------- LASER OPEN CHECK END -------) 
N12
#3000=11(LASEROPEN)
 
N703 
 
 
G91G31G01Z-8.F50 
G91G01Z0.5F100 
 
M106 
G04X2. 
M116 
 
G91G31G01Z-3.F10 
#11195=#5023 
G91G01Z0.2F100 
 
G91G31G01Z-3.F10 
#11195=#11195+#5023
#11195=#11195/2
 
IF[#11190EQ0]THEN#11200=#11196 
#11196=[#11195-#520] 
 
G91G28Z0.
 
 
 
(--- PROBE MEASURE END ---)
 
 
 
 
#10151=#11151-#11001 
#10152=#11152-#11002 
#10153=#11153-#11003 
#10154=#11154-#11004 
#10155=#11155-#11005 
#10156=#11156-#11006 
#10157=#11157-#11007 
#10158=#11158-#11008 
#10159=#11159-#11009 
#10160=#11160-#11010 
#10161=#11161-#11011 
#10162=#11162-#11012 
#10163=#11163-#11013 
#10164=#11164-#11014 
#10165=#11165-#11015 
#10166=#11166-#11016 
#10167=#11167-#11017 
#10168=#11168-#11018 
#10169=#11169-#11019 
#10170=#11170-#11020 
 
IF[ABS[#10151]GT0.1]GOTO135
IF[ABS[#10152]GT0.1]GOTO136
IF[ABS[#10153]GT0.1]GOTO137
IF[ABS[#10154]GT0.1]GOTO138
IF[ABS[#10155]GT0.1]GOTO139
IF[ABS[#10156]GT0.1]GOTO140
IF[ABS[#10157]GT0.1]GOTO141
IF[ABS[#10158]GT0.1]GOTO142
IF[ABS[#10159]GT0.1]GOTO143
IF[ABS[#10160]GT0.1]GOTO144
IF[ABS[#10161]GT0.1]GOTO145
IF[ABS[#10162]GT0.1]GOTO146
IF[ABS[#10163]GT0.1]GOTO147
IF[ABS[#10164]GT0.1]GOTO148
IF[ABS[#10165]GT0.1]GOTO149
IF[ABS[#10166]GT1.0]GOTO150
IF[ABS[#10167]GT0.1]GOTO151
IF[ABS[#10168]GT0.1]GOTO152
IF[ABS[#10169]GT0.1]GOTO153
IF[ABS[#11196-#11200]GT0.01]GOTO154
 
GOTO155
 
 
N135 
G28G91X0Y0 
#3000=1(T1.TOOL.CHECK) 
N136 
G28G91X0Y0 
#3000=1(T2.TOOL.CHECK) 
N137 
G28G91X0Y0 
#3000=1(T3.TOOL.CHECK) 
N138 
G28G91X0Y0 
#3000=1(T4.TOOL.CHECK) 
N139 
G28G91X0Y0 
#3000=1(T5.TOOL.CHECK) 
N140 
G28G91X0Y0 
#3000=1(T6.TOOL.CHECK) 
N141 
G28G91X0Y0 
#3000=1(T7.TOOL.CHECK) 
N142 
G28G91X0Y0 
#3000=1(T8.TOOL.CHECK) 
N143 
G28G91X0Y0 
#3000=1(T9.TOOL.CHECK) 
N144 
G28G91X0Y0 
#3000=1(T10.TOOL.CHECK)
N145 
G28G91X0Y0 
#3000=1(T11.TOOL.CHECK)
N146 
G28G91X0Y0 
#3000=1(T12.TOOL.CHECK)
N147 
G28G91X0Y0 
#3000=1(T13.TOOL.CHECK)
N148 
G28G91X0Y0 
#3000=1(T14.TOOL.CHECK)
N149 
G28G91X0Y0 
#3000=1(T15.TOOL.CHECK)
N150 
G28G91X0Y0 
#3000=1(T16.TOOL.CHECK)
N151 
G28G91X0Y0 
#3000=1(T17.TOOL.CHECK)
N152 
G28G91X0Y0 
#3000=1(T18.TOOL.CHECK)
N153 
G28G91X0Y0 
#3000=1(T19.TOOL.CHECK)
N154 
 
IF[#11190EQ1]GOTO702 
#11200=#11196
IF[#11190EQ0]THEN#11190=[#11190+1] 
IF[#11190EQ1]GOTO701 
N702 
 
 
 
G28G91X0Y0 
#3000=1(T20.TOOL.CHECK)
N155 
 
 
 
#11200=#11196-0.015
IF[#800GE11]THEN#800=0 
N99
 
 
(TOOL.CHECK END) 
 
#851=#3011 
#852=#3012 
(----- PROBE CODE START-----)
 
(---G54 ORG---)
#613=#5223 
 
(---Probe On---) 
G91G28Z0.
G54
T20M6
G65P9008 
 
#1=1.0 
#2=#1+#500 
#3=20. 
 
(---N1 Z Point---) 
N1 
G00G90X1.3Y62. 
G43H200Z#3 
G65P9810Z[2.85+#1]F4000
G65P9811Z2.85S101
#711=#7003 
#811=#142
 
(---Z Axis Return---)
G00Z#3 
 
(---N2 Z Point---) 
N2 
G00G90X38.8Y66.6 
G43H200
G65P9810Z[0.901+#1]F4000 
G65P9811Z0.901S101 
#712=#7003 
#812=#142
 
(---Z Axis Return---)
G00Z#3 
 
(---N3 Z Point---) 
N3 
G00G90X36.5Y-64.5
G43H200
G65P9810Z[0.285+#1]F4000 
G65P9811Z0.285S101 
#713=#7003 
#813=#142
 
(---Z Axis Return---)
G00Z#3 
 
(---N4 Z Point---) 
N4 
G00G90X8.6Y-66.9 
G43H200
G65P9810Z[2.893+#1]F4000 
G65P9811Z2.893S101 
#714=#7003 
#814=#142
 
(---Z Axis Return---)
G00Z#3 
 
(---N5 Z Point---) 
N5 
G00G90X35.7Y0. 
G43H200
G65P9810Z[0.+#1]F4000
G65P9811Z0.S101
#715=#7003 
#815=#142
 
(---Z Axis Return---)
G00Z#3 
 
 
(---N6 Z Point---) 
N6 
G00G90X1.107Y-68.261 
G43H200
G65P9810Z[1.765+#1]F4000 
G65P9811Z1.765S101 
#716=#7003 
#816=#142
 
 
(---Average Point---)
#710=[#711+#712+#713+#714]/4 
 
(---Probe Off---)
G00G91G28Z0. 
G65P9009 
 
(---IF---) 
IF[ABS[#811]GE[0.15]]GOTO100 
IF[ABS[#812]GE[0.15]]GOTO200 
IF[ABS[#813]GE[0.15]]GOTO300 
IF[ABS[#814]GE[0.15]]GOTO400 
IF[ABS[#815]GE[0.15]]GOTO500 
IF[ABS[#816]GE[0.15]]GOTO600 
GOTO9999 
 
 
(---ERROR---)
N100 
G91G28X0.Y0. 
#3000=1(N1 Z ERROR)
N200 
G91G28X0.Y0. 
#3000=1(N2 Z ERROR)
N300 
G91G28X0.Y0. 
#3000=1(N3 Z ERROR)
N400 
G91G28X0.Y0. 
#3000=1(N4 Z ERROR)
N500 
G91G28X0.Y0. 
#3000=1(N5 Z ERROR)
N600 
G91G28X0.Y0. 
#3000=1(N6 Z ERROR)
N9999
 
(-----PROBE CODE [MEDIA=youtube]N-[/MEDIA]----) 
 
#800=#800+1
 
 
(----- PROGRAM START-----) 
 
 
(--- AVERAGE ---)
G53
#5223=#710 
G04X0.2
 
(STEP1)
  
M26C0
(TPN01 START)
G54
 
 
G00G90G80G40G69G49 
G91G28Z0.
T1M06
G43H1S14000M03M08
 
(Tool Num : 1) 
(Body radius : 4.995)
(Corner radius : 0.) 
(Shank Radius : 4.995000)
(T Shank dia : 9.9900) 
(Angle : 90.000) 
(Cut Height : 1.000) 
 
G5.1Q1 
G00G90A0.
 
G00G90X39.164Y51.514 
Z38. 
Z8.801 
X39.164Y51.514Z4.801 
G01Z3.801F4000 
X39.311Y51.605 
G01X39.245Y51.713Z3.796F5000 
X39.177Y51.828Z3.79
X39.114Y51.939Z3.785 
X39.039Y52.074Z3.779 
X38.96Y52.224Z3.772
X38.897Y52.348Z3.766 
X38.801Y52.548Z3.757 
X38.739Y52.682Z3.751 
X38.669Y52.842Z3.744 
X38.615Y52.972Z3.738 ........<trích đoạn>
 
Last edited by a moderator:
Ðề: Cao Thủ Lập Trình

Cách lập trình này là lập trình động hay còn gọi là Macro.
Trong trương trình sẽ có các biến được đặt sau dấu "#"
Các biến này có thể định nghĩa ngay trong trương trình ví dụ
N001 #1 = 1.50
N002 #2 = 2.50
N003 #3 = 3.50
N004 X#1 Y#2 Z#3

IF [#10 GT #20] THEN #1 = #10 - #20; ( GT = GREATER= Lớn hơn , IF THEN = nếu thì
EQ = bằng ....

Nếu gia công họ sảm phẩm mà có sự tương đồng thì có thể dùng cách này ...
Mình thấy một số bạn làm trực tiếp ở các xưởng gia công Nhật, Hàn , USA ... biết dùng cách này hặc họ có rất nhiều các macro hay.

Phần còn lại Bạn tìm hiểu thêm vì cái này tìm hiểu sâu thì khá là phức tạp đấy !
 
Ðề: Cao Thủ Lập Trình

Cách lập trình này là lập trình động hay còn gọi là Macro.
Trong trương trình sẽ có các biến được đặt sau dấu "#"
Các biến này có thể định nghĩa ngay trong trương trình ví dụ
N001 #1 = 1.50
N002 #2 = 2.50
N003 #3 = 3.50
N004 X#1 Y#2 Z#3

IF [#10 GT #20] THEN #1 = #10 - #20; ( GT = GREATER= Lớn hơn , IF THEN = nếu thì
EQ = bằng ....

Nếu gia công họ sảm phẩm mà có sự tương đồng thì có thể dùng cách này ...
Mình thấy một số bạn làm trực tiếp ở các xưởng gia công Nhật, Hàn , USA ... biết dùng cách này hặc họ có rất nhiều các macro hay.

Phần còn lại Bạn tìm hiểu thêm vì cái này tìm hiểu sâu thì khá là phức tạp đấy !
Máy của em mua về, trong máy cũng toàn xài chương trình macro. + - tùm lum. Không hiểu cho lắm, ở bên anh có dạy lệnh macro không ?
 
Author
Ðề: Cao Thủ Lập Trình

(IF [#10 GT #20] THEN #1 = #10 - #20; ( GT = GREATER= Lớn hơn , IF THEN = nếu thì
EQ = bằng ....) .a cho e hỏi cái này nó viết bằng ngông ngữ gi?
 
(IF [#10 GT #20] THEN #1 = #10 - #20; ( GT = GREATER= Lớn hơn , IF THEN = nếu thì
EQ = bằng ....) .a cho e hỏi cái này nó viết bằng ngông ngữ gi?
đây là là cấu trúc điều kiện trong bất kỳ ngôn ngữ nào cũng có nhưng nó không hoàn toàn giống ngôn ngữ nào cả.
Nó là cấu trúc mà hãng phát triển cho điều khiển Fanuc.

Máy của em mua về, trong máy cũng toàn xài chương trình macro. + - tùm lum. Không hiểu cho lắm, ở bên anh có dạy lệnh macro không ?
đào tạo cái này rất khó vì nó liên quan tới tư duy ngôn ngữ lập trình , thuật toán ...và lại không mấy khi dùng Macro trong chương trình nên không nhất thiết phải biết nó.
Máy của bạn chắc sài được code dó phần mềm CAM xuất ra hoặc G-code iso.
 
Last edited:
Ðề: Cao Thủ Lập Trình

Máy của em mua về, trong máy cũng toàn xài chương trình macro. + - tùm lum. Không hiểu cho lắm, ở bên anh có dạy lệnh macro không ?
Bạn vào link dưới cố gắng đọc hết các bài viết sẽ hiểu cơ bản Macro là gì. Muốn chạy mô phỏng bạn down CIMCO 6 hoặc 7 về để hiểu chi tiết hơn.
http://www.meslab.org/mes/threads/3...r-cnc-[MEDIA=youtube]achin-gcode[/MEDIA].html
 
Author
Ðề: Cao Thủ Lập Trình

mọi người cùng tham khảo cái này nhé!
%
O9811(REN XYZ MEASURE)
G5.1Q0
G65P9724
IF[#19EQ#0]GOTO1
IF[#20EQ#0]GOTO1
#3000=91(ST INPUT MIXED)
N1G53
IF[#19EQ#0]GOTO2
IF[#11EQ#0]GOTO2
#3000=91(SH INPUT MIXED)
N2G53
IF[#20EQ#0]GOTO3
IF[#13EQ#0]GOTO3
#3000=91(TM INPUT MIXED)
N3G53
#1=135
WHILE[#1LE149]DO1
#[#1]=#0
#1=#1+1
END1
#10=#5041(X START)
#12=#5042(Y START)
G31X[#10-#502]Y[#12-#503]F#119
G53
IF[ABS[#5061-[#10-#502]]GE#123]GOTO22
IF[ABS[#5062-[#12-#503]]GE#123]GOTO22
#30=-1(DIR FLAG)
IF[#24NE#0]GOTO5
IF[#25NE#0]GOTO7
(Z MOVE)
IF[#26EQ#0]GOTO225
#7=5203
IF[[#5043-#116]LT#26]GOTO4
#30=1
N4G53
G65P9726Z#26Q#17
IF[#149NE0]GOTO21
#135=#10
#136=#12
#137=#126-#116(Z POS)
#138=#137
IF[#8EQ#0]GOTO45
#138=#138+#[2000+#8](SIZE)
N45G53
#142=#137-#26(Z ERROR)
#143=#138-#26(SIZE ERROR)
#145=ABS[#142](T P ERR)
#146=#143*#30(METAL CON)
GOTO9
N5G53(X MOVE)
IF[#25NE#0]GOTO225
IF[#26NE#0]GOTO225
#6=#500
#7=5201
IF[#5041LT#24]GOTO6
#6=-#500
#30=1
N6G53
G65P9726X#24Q#17S#500
IF[#149NE0]GOTO21
#135=#124+#6+#502(COR SKIP POS)
#136=#12
#138=#135
IF[#8EQ#0]GOTO65
#138=#138+#[2000+#8](ACT SIZE)
N65G53
#140=#135-#24(X ERROR)
#143=#138-#24(SIZE ERROR)
#145=ABS[#140](T P ERROR)
#146=#143*#30(METAL CON)
GOTO9
N7G53(Y MOVE)
IF[#26NE#0]GOTO225
#6=#501
#7=5202
IF[#5042LT#25]GOTO8
#6=-#501
#30=1
N8G53
G65P9726Y#25Q#17S#501
IF[#149NE0]GOTO21
#135=#10
#136=#125+#6+#503(Y SKIP POS)
#138=#136
IF[#8EQ#0]GOTO85
#138=#138+#[2000+#8](ACT SIZE)
N85G53
#141=#136-#25(ERROR)
#143=#138-#25(SIZE ERROR)
#145=ABS[#141](TP ERROR)
#146=#143*#30(METAL CON)
N9G53
#147=#30
IF[#23EQ#0]GOTO10
G65P9730H#11M#13S#19T#20W#23X#24Y#25Z#26
N10G53
IF[#21EQ#0]GOTO11(U UPPER TOL)
IF[ABS[#143]GE#21]GOTO23
IF[#145GE#21]GOTO23
N11G53
IF[#11EQ#0]GOTO13
IF[ABS[#143]LT#11]GOTO12
#148=1
N12G53
IF[#120AND4EQ4]GOTO13
IF[ABS[#143]LT#11]GOTO13
G0X#10Y#12
#[3006-[[#120AND8]/8*6]]=1(OUT OF TOL)
N13G53
IF[#13EQ#0]GOTO15
IF[ABS[#145]LT[#13/2]]GOTO14
#148=2
N14G53
IF[#120AND4EQ4]GOTO15
IF[ABS[#145]LT[#13/2]]GOTO15
G0X#10Y#12
#[3006-[[#120AND8]/8*6]]=1(OUT OF POSITION)
N15G53
IF[#20EQ#0]GOTO19
IF[ABS[#146]LT#22]GOTO19(NULL BAND)
IF[#9NE#0]GOTO16
#9=1
N16G53
G65P9732T#20C[#146*#9]Z#26
N19G53
IF[#19EQ#0]GOTO24
G65P9732S#19Z#26W1.0
GOTO24
N21G53
IF[#149NE2]GOTO22
G0X#10Y#12
#3000=93(PROBE FAIL)
N22G53
G0X#10Y#12
#3000=92(PROBE OPEN)
N225G53
G0X#10Y#12
#3000=91(XYZ INPUT MIXED)
N23G53
#148=3
IF[#120AND4EQ4]GOTO24
G0X#10Y#12
#[3006-[[#120AND8]/8*6]]=1(UPPER TOL EXCEEDED)
N24G53
G0X#10Y#12
M99

%
 
Top