Thiết kế hệ thống giám sát và điều khiển bàn máy CNC

MỞ ĐẦU Với sự phát triển không ngừng của các thành tựu khoa học - Công nghệ đặc biệt là lĩnh vực điều khiển số và tin học đã cho phép những nhà chế tạo máy ứng dụng vào máy khoan cắt kim loại với các hệ thống điều khiển ngày càng chính xác hơn với tóc độ nhanh hơn và giá thành thấp hơn. Sự xuất hiện của các máy CNC(Computer Numerical Control) đã nhanh chóng thay đổi việc sản xuất công nghiệp. Các đường cong được thực hiện dễ dàng như đường thẳng, các cấu trúc phức tạp 3 chiều cũng dễ dàng thực hiện, và một lượng lớn các thao tác do con người thực hiện được giảm thiểu. Việc gia tăng tự động hóa trong quá trình sản xuất với máy CNC tạo nên sự phát triển đáng kể về chính xác và chất lượng. Kỹ thuật tự động của CNC giảm thiểu các sai sót và giúp người thao tác có thời gian cho các công việc khác. Ngoài ra còn cho phép linh hoạt trong thao tác các sản phẩm và thời gian cần thiết cho thay đổi máy móc để sản xuất các linh kiện khác. Qua việc tìm hiểu và nghiên cứu về máy CNC, mô hình máy CNC khoan và phay biên dạng chi tiết sản phâm được tôi thiết kế nhỏ gọn, điều khiển bằng PLC S7-200. Với mục đích áp dụng những gì đã học, những phương pháp điều khiển,bộ giám sát vào thực tế. Đề tài “Thiết kế hệ thống giám sát và điều khiển bàn may CNC” được thực hiện trong thời gian hơn năm tháng, nhưng vì thời gian có hạn nên đề tài vẫn có nhiều khuyết điểm, rất mong ý kiến đóng góp của quí thầy cô giáo để việc nghiên cứu trở nên thực tế hơn. Mục lục MỞ ĐẦU 1 LỜI CẢM ƠN 2 DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH VẼ 9 PHẦN I: 13 A.MÁY CÔNG CỤ ĐIỀU KHIỂN THEO CHƯƠNG TRÌNH SỐ (CNC): 13 I. MÁY CÔNG CỤ ĐIỀU KHIỂN THEO CHƯƠNG TRÌNH SỐ (MÁY CNC):. 13 II. CÁC DẠNG ĐIỀU KHIỂN MÁY CNC:. 16 II.1. Điều khiển trực tuyến DNC (Direct Numerical Control): 16 II.2. Điều khiển thích nghi AC (Adaptive Control): 18 II.3. Hệ thống gia công linh hoạt FMS (Flexible Manufacturing Systems): 20 III. ĐẶC ĐIỂM CẤU TRÚC MÁY CNC:. 23 IV. LẬP TRÌNH CHO MÁY CNC:. 25 B. CÁC ĐIỂM CẦN QUAN TÂM KHI LẬP TRÌNH TRÊN MÁY CNC: 27 I.HỆ TỌA ĐỘ:. 27 I.1. Điểm Zero chương trình: 28 I.2. Điểm khởi hành: 28 I.3. Điểm chuẩn: 29 I.4. Lập trình theo tọa độ tuyệt đối (Absolute) và theo toạ độ gia số (Incremental): 30 II.ĐIỀU KHIỂN ĐƯỜNG DỊCH CHUYỂN TRÊN MÁY CNC:. 31 II.1. Những khái niệm liên quan đến phép đo vị trí: 31 II.2. Các phương pháp đo: 31 II.3. Các dụng cụ đo vị trí : 36 II.4. Các dạng dịch chuyển :. 45 C. CÁC CHỨC NĂNG ĐIỀU KHIỂN MÁY CNC: 46 I.BẢNG ĐIỀU KHIỂN ĐƯỜNG DỊCH CHUYỂN G:. 46 II. Ý NGHĨA MỘT SỐ CHỨC NĂNG:. 50 II.1.Chọn mặt phẳng: 50 II.2.Di chuyển nhanh (G00): 51 II.3.Nội suy tuyến tính (nội suy thẳng) G01: 51 II.4.Nội suy phi tuyến (nội suy cung tròn) G02, G03: 52 PHẦN II. 55 CHƯƠNG I: THIẾT KẾ PHẦN CỨNG 55 I.MÔ HÌNH:. 55 I.1.Cấu trúc mô hình: 55 I.2.Cảm biến vị trí ghép với động cơ DC: 56 II.SƠ ĐỒ KHỐI HỆ THỐNG ĐIỀU KHIỂN VỊ TRÍ:. 57 III.MẠCH ĐỘNG LỰC:. 57 III.1.Sơ đồ khối của tác động khâu động lực: 58 III.2.Chức năng của các khối: 59 IV.MẠCH NHẬN XUNG TỐC ĐỘ CAO TỪ ENCODER:. 60 CHƯƠNG II: TÍNH TOÁN THIẾT KẾ BỘ ĐIỀU KHIỂN PID VỊ TRÍ ĐỘNG CƠ: 61 I.SỬ DỤNG BỘ ĐIỀU KHIỂN PID S7-200: 61 I.1.Thuật toán PID số: 61 I.2.Làm việc với bộ PID S7-200: 63 II.TÍNH TOÁN CÁC THÔNG SỐ BỘ PID ĐIỀU KHIỂN VỊ TRÍ ĐỘNG CƠ: 64 III.TÍNH TOÁN CÁC THAM SỐ Kp, Ki, Kd THEO LÝ THUYẾT CHO ĐỘNG CƠ: 64 III.1.Thiết lập hàm truyền cho động cơ: 64 III.2.Vẽ đáp ứng điều khiển P: 66 III.3.Đáp ứng PI: 68 CHƯƠNG III: THIẾT KẾ PHẦN MỀM . 70 I.KẾT NỐI BỘ ĐIỀU KHIỂN VÀ MÁY TÍNH:. 70 II. PHƯƠNG PHÁP TÍNH TOÁN VÀ GIẢI THUẬT CÁC HÀM NỘI SUY. 76 II.1.Phương pháp nội suy. 76 II.2.Phương pháp nội suy đường thẳng : 77 II.3.Nội suy cung tròn : 79 II.4.Nội suy xoắn ốc. 80 II.5.Nội suy parabol 81 II.6.Nội suy bậc 3: 81 III.TÍNH TOÁN VÀ GIẢI THUẬT NỘI SUY ĐOẠN THẲNG THEO 2 TRỤC OX,OY:. 81 III.1.Tính toán nội suy đoạn thẳng theo lượng chạy cắt F. 81 III.2.Di chuyển quảng đường dài L(LX,LY) trên hai trục với lượng chạy cắt F: 84 III.3.Giải thuật nội suy đoạn thẳng G04: 86 III.4.Giải thuật nội suy G00: Chạy dao nhanh đến một điểm tọa độ cho trước. 89 IV.TÍNH TOÁN VÀ GIẢI THUẬT NỘI SUY G01,G02,G03:. 89 IV.1.Nội suy đường tròn tâm O bán kính R (G01): 89 IV.2.Nội suy cung tròn từ điểm A đến điểm B bán kính R (G02: ngược chiều kim đồng hồ; G03: cùng chiều kim đồng hồ): 92 V. XÁC ĐỊNH ĐIỂM TRONG HỆ TỌA ĐỘ CỰC 97 V.1.Tính góc của một điểm trong hệ tọa độ cực: 97 V.2.Tính góc quay của lệnh nội suy cung tròn: 99 V.3.Giải thuật nội suy G02,G03: 100 VI.GIAO DIỆN ĐIỀU KHIỂN BẰNG MÁY TÍNH:. 101 VI.1.Phần hiển thị: 102 VI.2.Phần tập lệnh: 103 VI.3.Phần tải lệnh từ tập tin Excel: 106 VI.4.Giản đồ xung kết nối hoạt động giữa máy tính và PLC: 106 VI.5.Giải thuật kết nối hoạt động giữa máy tính và VB: 107 PHẦN 3: 108 I.NHỮNG KẾT QUẢ ĐẠT ĐƯỢC KHI LÀM LUẬN VĂN: 108 II.NHỮNG KẾT QUẢ CHƯA ĐẠT ĐƯỢC: 108 DANH MỤC TÀI LIỆU THAM KHẢO: 109

docx126 trang | Chia sẻ: lvcdongnoi | Lượt xem: 4586 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Thiết kế hệ thống giám sát và điều khiển bàn máy CNC, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
cung tròn nội suy thì máy sẽ báo lỗi. PHẦN II THIẾT KẾ VÀ THI CÔNG CHƯƠNG I: THIẾT KẾ PHẦN CỨNG I.MÔ HÌNH: I.1.Cấu trúc mô hình: Mô hình gồm 3 trục Ox, Oy, Oz: Trục Ox: Gồm 1 motor Dc 24v có bộ giảm tốc (1:100), gắng Encoder 100xung trực tiếp vào trục động cơ; Một Trục vitme vòng 5mm bi với sai số nhỏ 0.001mm; hai thanh trượt để chuẩn đường dich chuyển của vitme. Bàn máy được gắng trực tiếp vào trục Ox. Trục Oy: Gồm 1 motor Dc 24v có bộ giảm tốc (1:100), gắng Encoder 100xung trực tiếp vào trục động cơ; Một Trục vitme bi vòng 5mm với sai số nhỏ 0.001mm; hai thanh trượt để chuẩn đường dich chuyển của vitme. Trục Oz: Gồm cơ cấu dịch chuyển bộ phận khoan và phay lên xuống, cơ cấu gồm hai thanh trượt, một trục vitme vòng 1mm được chuẩn đường dịch chuyển thông qua thanh trượt. Một động cơ DC24V, gắng encoder 100xung vào trục hộp số giảm tốc. Hình 30: Mô hình khoan phay CNC I.2.Cảm biến vị trí ghép với động cơ DC: Ta sử dụng động cơ một chiều 24V kích từ độc lập bằng nam châm vĩnh cửu, công suất nhỏ làm đối tượng điều khiển. Điện trở nội động cơ: 11(Ohm),công suất 50W. Động cơ một chiều sử dụng hộp số giảm tốc, tỉ lệ 1: 100 vòng. Cảm biến vị trí là Encoder 100 xung, Encoder này được ghép đồng trục với trục động cơ DC bằng khớp nối cứng, và hồi tiếp vị trí trục động cơ DC về PLC. Một điều ta phải quan tâm là khớp nối cứng giữa trục động cơ và trục vitme ta cần phải thật chính xác, nhằm giúp động cơ và cảm biến quay đồng trục với nhau để sai số điều khiển sẽ giảm đi nhiều. Hình 31: Động cơ gắng Encoder sử dụng trong mô hình II.SƠ ĐỒ KHỐI HỆ THỐNG ĐIỀU KHIỂN VỊ TRÍ: M + - Mạch khuếch đại công suất Cảm biến vị trí Mạch điều khiển (Uđk) Mạch động lực PLC Máy tính Hình 32: Sơ đồ khối hệ thống điều khiển vị trí PLC xuất ra điện áp thay đổi thông qua việc điều xung để điều khiển tốc độ và chiều quay của động cơ thông qua mạch điều khiển và mạch khuếch đại công suất. Giá trị từ cảm biến vị trí được đưa về PLC để xác định vị trí hiện tại của trục động cơ, từ đó hiệu chỉnh và xuất điện áp điều khiển thích hợp. III.MẠCH ĐỘNG LỰC: Mạch khuếch đại công suất dùng để điều khiển chiều quay và tốc độ của động cơ, yêu cầu đặt ra là để động cơ có thể làm việc ở cả 4 phần tư của mặt phẳng đặc tính cơ, nghĩa là động cơ có thể làm việc được ở cả chế độ động cơ và chế độ hãm. Ta sử dụng bộ mạch công suất là bộ chopper, với các công tắc lá Role công suất có cấu hình như sau: Hình 33: Mạch động lực sử dụng cho mô hình III.1.Sơ đồ khối của tác động khâu động lực: Xung PWM từ PLC Tín hiệu đảo chiều từ PLC Khối cách ly Khối đảo tín hiệu Khối cách ly Kích dẫn đóng ngắt role Kích dẫn đóng ngắt role đảo chiều Hình 34: Sơ đồ khối của các khâu động lực Xung PWM xuất ra từ PLC sẽ được cách ly vói phần công suất thông qua Opto để lấy mức tín hiệu 12V đóng mở Role 4 tiếp điểm. Chiều quay của động cơ sẽ được đảo khi có tín hiêu một ngõ ra từ PLC đống mở đảo chiều động cơ. Vận tốc động cơ được điều chỉnh bằng việc điều chế xung ra từ ngõ ra PLC, điện áp trung bình sẽ được cung cấp cho motor hoạt động. VAB VAB1 Vd Vd wt Hình 35: Điện áp trung bình khi điều xung III.2.Chức năng của các khối: III.2.1.Khối cách li điện áp: Với mục đích lấy điện áp cách ly 24V so với PLC là 24V kích dẫn Role công suất. Khối cách ly gồm một Opto PC817. Opto được kích dẫn khi tín hiệu 24V hạn dòng điện trở 4,7k. Điện áp 12V sẽ được lấy đưa vào khối đảo tín hiệu. Sơ đồ biểu diễn dạng điện áp. t 24V t 12V V2 V1 Hình 36: Giản đồ xung khối cách li điện áp III.2.2.Khối đảo tín hiệu: Dòng qua cuộn cảm role sẽ được cho phép thông qua FET IRF540. Tín hiệu lấy từ khối cách ly sẽ được đảo chiều thông qua bộ đảo gồm 2 transistor PNP và NPN mắc song song. Khi FET được kích dẫn, dòng điện sẽ chạy trực tiếp từ nguồn đến cuộn dây qua FET xuống max 0V. Role được bảo vệ dòng ngược thông qua diod dạp dòng công suất vừa 4007. t t 1 0 1 0 Tín hiệu từ PLC Tín hiệu đóng ngắt rơle Hình 37: Giãn đồ xung qua khối công suất IV.MẠCH NHẬN XUNG TỐC ĐỘ CAO TỪ ENCODER: Mạch nguyên lí: Hình 38: Mạch nguyên lí mạch nhận xung Encoder Tín hiệu ra của encoder là 5V. Vì vậy để lấy tín hiệu đưa vào PLC, tín hiệu từ encoder sẽ được chuyển áp thông qua bộ cách ly. Sơ đồ khối chuyển mức: Tín hiệu từ Encoder Bộ cách li điện áp Tín hiệu đưa vào PLC Hình 39: Sơ đồ khối mạch nhận xung Encoder CHƯƠNG II: TÍNH TOÁN THIẾT KẾ BỘ ĐIỀU KHIỂN PID VỊ TRÍ ĐỘNG CƠ: I.SỬ DỤNG BỘ ĐIỀU KHIỂN PID S7-200: I.1.Thuật toán PID số: Luật PID trên miền thời gian (liên tục) được mô tả bởi công thức: Với Kp là hằng số tỉ lệ TC là hằng số thời gian tích phân Td là hằng số thời gian vi phân Xấp xỉ thành phần I: TI = TC / KC Xấp xỉ theo nguyên tắc hình chữ nhật: Xấp xỉ theo nguyên tắc hình thang: Trong đó T là chu kì trích mẫu. Xấp xỉ thành phần D: Khai triển thành chuỗi: Biến đổi Laplace: S.F(s) ≈ F(s) [C0 + C1e-sT + … + Cne-snT] Vi phân xấp xỉ bậc hai: Vi phân xấp xỉ bậc 1: Xấp xỉ luật PID: Theo Takahashi có thể làm giảm bớt biên độ độ lớn điều khiển khi đại lượng chủ đạo ( giá trị đặt ) có đột biến nhanh bằng cách, thay vì ek = wk – xk chỉ sử dụng ek = - xk. Từ đó ta có : Ta có được mô hình điều khiển PID số: KP Kd(1-z-1)-1 Tín hiệu vào Tín hiệu ra Tín hiệu bù Hình 40: Mô hình điều khiển PID số I.2.Làm việc với bộ PID S7-200: Bộ PID S7-200 được nhà sản xuất đưa ra tính toán thuật toán PID và chứa đựng sẵn trong PLC. Bộ PID được tính toán lưu dữ liệu dưới dạng bảng và dữ liệu vào ra được xử lí khi có lệnh như mọi lệnh khác. Dữ liệu dạng bảng được lưu vào 32 byte liên tiếp và theo thứ tự sau: Byte Dữ liệu Định dạng Kiểu Ý nghĩa 0 PVn Số thực Vào Giá trị thực tế (nằm trong khoảng 0.0-1.0) 4 SPn Số thực Vào Giá trị đặt (nằm trong khoảng 0.0-1.0) 8 Mn Số thực Vào/Ra Giá trị ra PID (nằm trong khoảng 0.0-1.0) 12 Kc Só thực Vào Hệ số khuyếch đại 16 Ti Số thực Vào Hằng số thời gian lấy mẫu 20 Ts Số thực Vào Hằng số thời gian tích phân 24 Td Số thực Vào Hằng số thời gian vi phân 28 MX Số thực Vào/ra Tín hiệu ra trước đó 32 PVn-1 Số thực Vào/ra Giá trị thực tế trước đó Giá trị đặt đặt được tính toán và xử lí đưa vào nằm trong khoảng 0.0 đến 1.0. Lúc đó giá trị ra Mn sẽ được xử lí ngược lại đưa ra tín hiệu thực. Các hằng số Kc, Ts, Ti ,Td được ta tính toán dựa vào thuật toán PID. II.TÍNH TOÁN CÁC THÔNG SỐ BỘ PID ĐIỀU KHIỂN VỊ TRÍ ĐỘNG CƠ: Áp dụng với mô hình bàn máy CNC: Giới hạn di chuyển trục Ox là 200mm, tương ứng với số xung: 200*4000 = 800000xung. Tương tự trục Oy là 120mm, Tương ứng 4800000 xung Như vậy ta lấy hệ số chia: 10^7 Giá trị xung đặt hiện tại: K (xung) Giá trị tính toán sai lệnh qua thuật toán PID là Mn. Ta có được mức điện áp tương ứng: là Mn*500. Ứng với động cơ chạy tốc độ điều xung tỉ lệ băm xung 500/2000 Giá trị Mn sẽ được PID PLC tính toán và đưa ra độ sai lệch vị trí thức tế so với hiện tại và xuất ra giá trị thực. Khi sai lệch Mn là 0 thì tương ứng với múc điện áp là 0V. Lúc này vị trí thực tế đã đạt được vị trí đặt. Giá trị sai lệch là lớn nhất 1.0 thì động cơ lúc này hoạt động tối đa. III.TÍNH TOÁN CÁC THAM SỐ Kp, Ki, Kd THEO LÝ THUYẾT CHO ĐỘNG CƠ: III.1.Thiết lập hàm truyền cho động cơ: Mô hình động cơ một chiều: Với L : điện cảm phần ứng, L = 2.5.10-3H R: điện trở phần ứng , R = 5Ohm U: điện áp phần ứng, U=24V E: sức phản điện động Hình 41: Mô hình động cơ một chiều v: tốc độ động cơ Mt : momen tải B: hệ số ma sát J: momen quán tính, J = 3.10-6kgm2/s2 Control Plant D R V + - Hình 42: Sơ đồ hệ thông điều khiển PID Theo định luật Kirchoff ta có phương trình cân bằng điện áp ở mạch điện phần ứng: V(t) = iƯ.Rư + Lưdiư/dt + Eư(t) (1) Với Eư = KΦv(t) là suất phản điện phần ứng Áp dụng định luật Niutơn cho chuyển động quay, ta có phương trình cân bằng momen trên trục động cơ: Md(t) = Mt(t) + Bv(t) + Jdv(t)/dt (2) Md(t) = KΦiư(t) Biến đổi Laplace phương trình (1) và (2) ta được: Uư(s) = Iư(s)Rư + Lư.s.Iư(s) +Eư(s) Eư(s) = KΦ(s) Md(s) = Mt(s) +Bv(s) + J.s.v(s) Md(s)=KΦiư(s) Từ đó ta có: (Ls+R)I(s) = U – Ksv (s) S(Js + B)v(s) = KI(s) Với đại lượng I(s), ta thành lập được hàm truyền: Vì ta dùng PID vị trí: Với K = 0.03, R=5, B = 6.10-6, J = 3.5.10-6, L = 25.10-6 Ta có hàm truyền: III.2.Vẽ đáp ứng điều khiển P: Với Kp =100 Ta vẽ đáp ứng Matlab như sau: J=3.5E-6; b=0.001; K=0.03; R=5; L=25E-6; num=K; den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2) 0]; motor=tf(num,den) Kp=100; contr=Kp; sys_cl=feedback(contr*motor,1); t=0:0.001:0.2; step(sys_cl,t) Hình 43: Đáp ứng P động cơ Nhận xét: Với Kp =100, như vậy thời gian đáp ứng nhanh 0.02s nhưng độ vọt lố còn cao. Ta có thể chọn để điều khiển với vận tốc dịch chuyển nhanh 0.09mm/s đối với mô hình. III.3.Đáp ứng PI: Với Kp = 100, Ki=300 Ta vẽ đáp ứng PI cho động cơ: J=3.5E-6; b=0.001; K=0.03; R=5; L=25E-6; num=K; den=[(J*L) ((J*R)+(L*b)) ((b*R)+K^2) 0]; motor=tf(num,den) Kp=100; Ki=300; contr=tf([Kp Ki],[1 0]); sys_cl=feedback(contr*motor,1); t=0:0.001:0.1; step(sys_cl,t) Đáp ứng PI của động cơ: Hình 44: Đáp ứng PI động cơ Nhận xét: Đáp ứng của động cơ nhanh hơn 0.01s. Đồng thời độ vọt lố nhỏ hơn so với bộ điều khiển P. Kết quả thực nghiệm: Chọn Kp=100, Ki =300 cho bộ điều khiển PI. CHƯƠNG III: THIẾT KẾ PHẦN MỀM Chúng ta thực hiện thiết kế giao diện giao tiếp PLC và máy tính bằng ngôn ngữ Visual Basic6.0 (VB). Trong môi trường lập trình VB, việc tạo ra một giao diện đồ họa là tương đối đơn giản. VB đã hỗ trợ cho người sử dụng những mô đun đối tượng phổ iến giúp cho công việc của người lập trình trở nên nhẹ nhàng hơn rất nhiều. Việc tạo giao diện chỉ là lựa chọn những đối tượng vẽ vào một giao diện (form) có sẵn cùng với việc thiết lập các thông số cho đối tượng. I.KẾT NỐI BỘ ĐIỀU KHIỂN VÀ MÁY TÍNH: Với bộ điều khiển là PLC S7-200, phần mềm lập trình Microwin 4.0, bộ OPC PC Access sẽ truyền dữ liệu giữa PLC và máy tính. Thông qua OPC, chúng ta có thể kết nối các phần mềm ứng dụng khác như Matlab, Visual Basic, ... Với ngôn ngữ lập trình đơn giản và tốc độ xử lí nhanh. OPC VB và Visual Basic sẽ được chọn thiết kế kết nối bộ điều khiển và máy tính. Cách kết nối OPC VB và PC Access: Bước 1: Cài đặt OPC VB. Nhấn vào file setup OPC VB. Ta cài đặt bộ OPC của VB vào máy tính điều khiển. Bước 2:Khởi tạo biến PC Access Mở giao diện V1.0 PC Access SP1. Kích chuột phải chọn New PLC. Đặt tên là PLC1 Kích chuột phải vào PLC1, chon New Item Đặt tên các biến theo biến và địa chỉ ô nhớ trong chương trình PLC Chọn Save để lưu các biến PC access vào máy tính. Bước 3: Liên kết PC Access và Visual Basic 6.0 Mở giao diện OPC for Visual Basic Chon Edit – Add Item Chọn liên kết S7200.OPCServer-Microwin-PLC Chọn Add All add tất cả biến có trong OPC PC Access vào list OPC Item. Chọn OK Chọn File – Save để lưu biến OPC vào file.csv. Thường ta lưu vào ổ đĩa C:\. Ta chú ý đến đường dẫn đến file.csv này để viết chương trình trong Visual Basic. Bắt buộc tên file phải có phần .csv, Ví dụ: OPC.csv Bước 4: Điền các hoạt động trong file .csv Vào đường dẫn lưu file.csv, kích đúp chuột mở file.csv. Đồng thời kích đúp chuột chọn file demo OPCControlsExample.csv của nhà sản xuất. Phần mềm để chạy chương trình này là Microsoft Ofice Excel Chọn xóa tất cả phần dữ liệu Copy phần Item trong file.csv đã được lưu vào field OPC Item Chọn save lưu file.csv (chọn YES khi lưu) và đóng 2 file.csv lại. Bước 5: Viết chương trình trong Visual Basic Mở giao diện Visual Basic Chọn Project – Components Chọn check vào OPC Control Lúc này tren VB sẽ xuất hiện biểu tượng OPC Control trên thanh công cụ Kích chọn vẽ OPC Control vào vùng giao diện, Ta đặt tên Name: FastOPCControl1 Vào phần Properties- ConfigPath. Ta ghi đường dẫn file.csv đã lưu ở trên. Bước 6: Làm việc với FastOPCControl1 Lấy dữ liệu từ một Item của OPC LabelCONHO.Caption=FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.START") Viết dữ liệu vào một Item của OPC FastOPCControl1.WriteValue 0,"S7200.OPCServer\MicroWin.PLC.CUNG_D" … II. PHƯƠNG PHÁP TÍNH TOÁN VÀ GIẢI THUẬT CÁC HÀM NỘI SUY. II.1.Phương pháp nội suy. Trên máy công cụ điều khiển theo chương trình số, đường tác dụng giữa dụng cụ và chi tiết được hình thành nhờ các dịch chuyển tọa độ trên nhiều trục. Để sản sinh một biên dạng gia công, giữa các chuyển động trên từng trục tọa độ riêng rẻ phải có một quan hệ hàm số (tuyến tính hoặc phi tuyến). Các điểm tựa phải nằm dày đặc đến mức sao cho biên dạng gia công tạo ra đủ chính xác (không có điểm nào nằm ngoài dung sai cho phép). Giá trị tọa độ vị trí các điểm trung gian được tìm ra trong một cụm chức năng của điều khiển số gọi là bộ nội suy. Nhiệm vụ bộ nội suy: Tìm ra vị trí các điểm trung gian cho phép hình thành biên dạng cho trước trong giới hạn dung sai xác định. Tốc độ đưa ra vị trí các điểm trung gian phải phù hợp với tốc độ chạy dao. Đi tới chính xác các điểm kết thúc chương trình. Để xác định giá trị cần về vị trí trên các trục riêng lẻ, người ta ứng dụng các phương pháp nội suy khác nhau. Nếu phân loại theo thuật toán sử dụng, ta có thể phân bố nội suy theo 2 nhóm: - Nhóm 1: các thiết bị làm việc theo nguyên tắc hàm đánh giá và bộ phân tích vi phân số - Nhóm 2: các thiết bị làm việc theo nguyên tắc tích phân số Nếu phân loại theo phương pháp thực hiện, có 2 loại: - Sử dụng mạch cứng - Sử dụng chương trình Về mặt kĩ thuật, việc nội suy có thể được thực hiện bằng các thiết bị làm việc theo kiểu số hoặc kiểu tương tự: Bộ nội suy theo kiểu tương tự đơn giản nhưng độ chính xác hạn chế Trên thực tế người ta dùng các bộ nội suy làm việc theo nguyên tắc số. Việc tính toán nội suy các hàm số ở dạng số thực hiện theo ba phương pháp: Tính toán các hàm số trực tiếp từ đường cong dạng hàm toán học f(x,y,z) Tính toán các thông số của đường cong là thời gian thực Chuyển các phương trình riêng của hệ sang phương trình vi phân để tính toán bằng số sẽ tìm ra các giá trị chạy dao thông qua tổng các vi phân. Phương pháp này gọi là phương pháp phân tích vi phân số DDA (Digital Differential Analyse). II.2.Phương pháp nội suy đường thẳng : + Khái niệm: Đầu khoan được di chuyển từ điểm đầu tới điểm cuối hành trình theo chuỗi đoạn thẳng. + Thực hiện: Nội suy đường thẳng theo 2 hay 3 trục rất thông dụng + Các thông số yêu cầu: Tọa độ điểm đầu, tọa độ điểm cuối Tốc độ di chuyển trên mỗi trục + Khả năng: Về lí thuyết, nội suy đường thẳng có thể lập trình quỹ đạo cong bất kì, nhưng lượng dữ liệu cần xử lí rất lớn. Sử dụng nội suy cung tròn, parabol, đường xoắn làm giảm đáng kể lượng dữ liệu cần lập trình. Điểm đầu Điểm cuối Y O X Hình 45: Nội suy đường thẳng Ví dụ: Nội suy từ điểm A đến điểm E Sử dụng phương pháp “ Phân tích vi phân số” DDA ( Digital Differenttial Analyse) Xét một dao cần chuyển động từ: PA (điểm khởi xuất) đến PE (điểm kết thúc) theo một đường thẳng với một tốc độ chạy dao u xác định. (hình vẽ) Hình 46: Ví dụ nội suy đường thẳng Gọi L: đoạn đường từ PA đến PE. Vậy trong thời gian T = L/u các đoạn đường thành phần (xE-xA) và (yE-yA) phải được thực hiện. Tọa độ vị trí các điểm trung gian được tính theo hàm thời gian: Chia thời gian T thành các khoảng Dt= T/N đủ nhỏ, phép tích phân cho phép thay bởi phép cộng số: n = 1, 2, 3, …, N Với mỗi bước cộng, giá trị về vị trí lại tăng thêm một bước bằng hằng số. Để đảm bảo độ chính xác của biên dạng nội suy, các bước cộng phải nhỏ hơn suất đơn vị Df của truyền động chạy dao. Thông thường Df = 0,001 mm. II.3.Nội suy cung tròn : + Khái niệm: Đầu khoan được di chuyển từ điểm đầu tới điểm cuối hành trình theo một cung tròn bởi một câu lệnh (block) đơn giản, thay thế cho rất nhiều câu lệnh nội suy đường thẳng. + Thực hiện: Nội suy đường tròn theo 2 trục + Các thông số yêu cầu: Tọa độ điểm đầu, tọa độ điểm cuối, tâm hoặc bán kính cung tròn. Tốc độ di chuyển trên mỗi trục + Khả năng: Nội suy cung tròn hay toàn bộ đường tròn. + Phương pháp thực hiện: Phương pháp nội suy DDA cũng được ứng dụng trong nội suy cung tròn. Vídụ: Nội suy cung tròn từ PA đến PE: Nội suy vòng PA: điểm khởi xuất PE: điểm đích P: điểm thuộc đường cong T: tg từ PA đến PE t: tg từ PA đến P X Y O ai T0 Hình 47: Nội suy vòng Từ hình vẽ: Muốn chạy cắt theo đường cong, những điểm trung gian trên biên dạng phải được xác định từ bộ nội suy trong mối quan hệ phụ thuộc vào thời gian chạy cắt. Theo đó: x = Rcosj y = Rsinj với j = 2p t/T; T: thời gian chạy hết toàn vòng thì: Lấy tích phân theo thời gian, ta có tốc độ thành phần trên từng trục riêng lẻ: => dx = -(2p / T)y(t)dt; dy = -(2p / T)x(t)dt; Với độ chính xác đủ dùng, phép tích phân trên có thể thay thế bởi phép cộng các gia số đường dịch chuyển. Do đó: II.4.Nội suy xoắn ốc Là phương pháp nội suy kết hợp giữa nội suy kết hợp giữa nội suy cung tròn theo hai trục và nội suy tuyến tính theo trục thứ 3. (hình 2.36) Hình 48: Nội suy xoắn ốc II.5.Nội suy parabol Dùng điểm không thẳng hàng để xấp xỉ đường cong có biên dạng tự do. Loại nội suy này thường dùng trong tạo khuôn mẫu khi mà các đường cong biên dạng tự do(free shape) được yêu cầu thay vì là các đường cong có biên dạng chính xác. Ta có thể dùng nội suy Parabol để tạo các đường cong bậc cao. So với nội suy đường thẳng, nội suy parabol giảm khoảng 50 lần số các điểm cần lưu trữ. Hình 2.37 PL PH Pv PF(Focus) A Hình 49: Nội suy Parapol Hình. Nội suy Parabol uL= yL/2A, uH= yH/2A u = (uH/N -> uL/N n = 1 : N Ta có: x = xv+ Au2 ; y = yv + 2Au => Xn+1= xn + (yn – yv)Au + (ADu) Yn+1 = yn+ 2ADu II.6.Nội suy bậc 3: Là phương pháp xấp xỉ biên dạng bằng đường cong bậc 3. phương pháp này thường được dùng tạo các bề mặt rất phức tạp như khuôn vỏ xe hơi, máy bay… III.TÍNH TOÁN VÀ GIẢI THUẬT NỘI SUY ĐOẠN THẲNG THEO 2 TRỤC OX,OY: III.1.Tính toán nội suy đoạn thẳng theo lượng chạy cắt F. Gọi PX,PY: là hệ số của hai trục X,Y. Áp dụng với mô hình: PX = PY = 4000 DeltaT : là thời gian 1 chu kỳ DDA (ms) . Delta = 2ms Lượng ăn dao F chính là vận tốc dịch chuyển cắt: ()= Trong một chu kỳ DDA thì đầu phun chạy được một khoảng là: (mm) Số xung cần được cung cấp trong mỗi chu kỳ DDA để có thể dịch chuyển được với vận tốc F (tính với trục X) : () Di chuyển quảng đường dài l(mm) trên một trục với lượng chạy cắt F (tính với trục X). Quãng đường L cần xung Số chu kỳ DDA cần thiết để dịch chuyển hết quãng đường L : N = = (chu kỳ) Giá trị N được làm tròn theo hướng lớn hơn (VD: 2045,22046) Trong (N – 1) chu kỳ đầu, mỗi chu kỳ sẽ được ghi : (xung) Chu kỳ cuối cùng sẽ được ghi : (xung) Tuy nhiên cách tính toán trên chưa thực tế vì trong quá trình từ lúc dao cắt đứng yên đến khi đạt đến vận tốc F thì phải qua một quá trình gọi là khởi động mềm: đầu phun di chuyển với vận tốc tăng dần từ 0 đến F. Khi đầu phun di chuyển gần đến điểm đích thì giảm dần vận tốc từ F xuống 0. Vì vậy ta phải xử lý như sau: Bộ khởi động mềm gồm một mảng bao gồm các giá trị xung như sau: Soft[0] = 0 Soft[1] = 10 Soft[2] = 20 … Soft[n-2] = Max-20 Soft[n-1] = Max-10 Soft[n] = Max Các tham số n, Max được chọn lựa tuỳ theo tốc độ tối đa mà ta thiết lập cho máy. Khi đó Max là số xung trong một chu kỳ phục vụ cho việc di chuyển tối đa Số xung cần được cung cấp cho Error Counter trong mỗi chu kỳ DDA để có thể dịch chuyển được với vận tốc F : () Vì thế khi bắt đầu di chuyển ta sử dụng số xung trong bộ Soft mỗi chu kỳ tương ứng với một phần tử Soft[ i ]. Chu kỳ đầu tiên ta thực hiện di chuyển với số xung trong Soft[ 0 ], chu kì kế tiếp với số xung trong Soft[ 1 ], và cứ thế cho đến Soft[ m ]. Với m được tính như sau: (m<n) Sau quá trình trên, ta mới dùng xung cho mỗi chu kỳ (k chu kỳ) cho đến khi gần đến điểm đích thì ta lại sử dụng bộ Soft theo trình tự ngược lại từ Soft[ m ] giảm dần đến Soft[ 0 ]. Vậy chỉ có k chu kỳ ở khoảng giữa là thực sự chạy với tốc độ F, và số chu kỳ đó được tính như sau : Quãng đường dịch chuyển L cần xung. Số chu kỳ : k = - xố xung trong ) Số xung trong một chu kỳ = - xố xung trong ) III.2.Di chuyển quảng đường dài L(LX,LY) trên hai trục với lượng chạy cắt F: Ta có: Lượng cắt trên trục X: Lượng cắt trên trục Y: Số xung cần được cung cấp trong mỗi chu kỳ DDA để có thể dịch chuyển được với vận tốc F : Trục X: () Trục Y: () Không mất tính tổng quát, giả sử: Số chu kỳ DDA cần thiết để dịch chuyển hết quãng đường L : N = = (chu kỳ) Bộ khởi động mềm được thực hiện như sau: Soft[0] = 0 Soft[1] = 10 Soft[2] = 20 … Soft[n-2] = Max-20 Soft[n-1] = Max-10 Soft[n] = Max Soft[i]= Với max là số xung cung cấp trong một chu kỳ DDA để đạt lượng cắt F. III.3.Giải thuật nội suy đoạn thẳng G04: DỮ KIỆN ĐẦU VÀO: + XA,YA,XB,YB : Toạ độ điểm đầu và cuối của đoạn thẳng. + F: Tốc độ chạy cắt. DentaT = 2ms : Thời gian 1 chu kỳ DDA. Khoảng thời gian nhanh nhất mà cpu đáp ứng được công việc tính toán và điều khiển nội suy. PX,PY : Số xung cần phát để trục x,y đi được 1mm. PX =PY=4000 BIẾN TÍNH TOÁN. + Lx,Ly : Đoạn đường hai trục cần di chuyển để đạt kích thước. + N: Số điểm chia nhỏ đoạn thẳng + sinα = (YB-YA)/(XB-XA) với XB≠XA, Phương dịch chuyển của đầu phun so với trục Ox. + ∑Fnsinα: Tổng chiều dài cần thêm vào (suy ra số xung) trong mỗi chu kì DDA + Độ dài đoạn thẳng AB: AB = + Phương trình đường thẳng đi qua 2 điểm A(XA,YA) và B(XB,YB): (YB-YA)x – (XB-XA)y-XA(YB-YA)+ YA(XB-XA) = 0 Bắt đầu YA=YB Truờng hợp 1 YA<YB LY = YA + ∑Fnsinα LY = YA - ∑Fnsinα Tính LX theo LY dựa vào x,y Điều chỉnh PID vị trí trí x,y theo LXLY Kết thúc LX>YB Y N Y N N Y YA<YB L<LA Y N Y N Hình 50: Giải thuật nội suy G04 Trường hợp 1: Nội suy theo đường thẳng y=YA XA<XB Bắt đầu LX = XA + ∑Fn LX = XA - ∑Fn Điều chỉnh PID vị trí trí x theo LX LX>=XB XA<XB Kết thúc LX<=XB N Y Y N Y Y N N Hình 51: Giải thuật nội suy theo đường thẳng y=yA III.4.Giải thuật nội suy G00: Chạy dao nhanh đến một điểm tọa độ cho trước. Bắt đầu Lấy tọa độ hiện tại của máy đưa vào tọa độ A Kết thúc Tọa độ điểm B là tạo độ điểm cần chạy nhanh đến Nội suy đường thẳng từ A đến B Tốc độ chạy dao cực đại Hình 52: Giải thuật nội suy G00 IV.TÍNH TOÁN VÀ GIẢI THUẬT NỘI SUY G01,G02,G03: IV.1.Nội suy đường tròn tâm O bán kính R (G01): Nội suy đường tròn tâm O (XO,YO), bán kính R cho trước. Phương trình đường tròn mặt phẳng tọa độ Oxy: x = Rcosj y = Rsinj với j = 2p t/T; T: thời gian chạy hết toàn vòng thì: Các đại lượng tính toán: F: Tốc độ chạy dao (mm/s) t : Tổng thời gian chu kì DDA (ms). t0 =2ms T: Thời gian chạy hết vòng tròn L = 2πR: Độ dài cả vòng tròn bán kính R N: Số chu kì DDA thực hiện chạy dao cả vòng tròn deltaPhi = : Góc quay cần cộng vào trong một giây Tâm O Điểm bắt đầu R Y O X Trường hợp 2: R<0 Tâm O Điểm bắt đầu R Y O X Trường hợp 1: R>0 Hình 53: Nội suy đường tròn G01 Dịch chuyển đầu khoan theo cung tròn độ dài 1mm: Số chu kì DDA thực hiện cung độ dài 1mm: n = Góc cần cộng vào trong mỗi chu kì DDA: a = 2.10-3.deltaPhi Để dịch chuyển hết vòng tròn thì số đo góc cộng vào ở N chu kì DDA là 360 độ, tương ứng 2π rad Giải thuật nội suy: Băt đầu Lấy tọa độ tâm O và Bán kính R R > 0 j = deltaPhi j = deltaPhi+π deltaPhi> 360 Tính x,y theo gócj Điều chỉnh PID vị trí theo x,y Kết thúc Hình 54: Giải thuật nội suy đường tròn G01 IV.2.Nội suy cung tròn từ điểm A đến điểm B bán kính R (G02: ngược chiều kim đồng hồ; G03: cùng chiều kim đồng hồ): Thuật giải tìm tâm cung tròn khi dữ liệu đầu vào là điểm đầu, điểm cuối và bán kính R. Hai đường tròn (O1, R) và (O2, R) lần tượt có phương trình: (X- Xo1)2 + (Y- Yo1) 2 = R2 (X- Xo2)2 + (Y- Yo2) 2 = R2 Hay X2 + Y2 – 2Xo1X – 2Yo1 Y + C = 0 X2 + Y2 – 2Xo2 X – 2Yo2 Y + C = 0 Trường hợp 1: Tọa độ tâm O C Tọa độ O Trường hợp 2: R Gọi I là trung điểm AB, I có tọa độ Viết phương trình đường (d1) qua AB : Đưa về dạng : X + Y + 1 = 0 Phương trình đường thẳng (d2)(d1) tại điểm C có dạng :-X + Y + 2 = 0 thay toạ độ điểm C vào phương trình này giá trị 2 Tìm toạ độ điểm O1 và O2 cách điểm C một đoạn là L = Ta có : toạ độ O và Othoả 2 điều kiện sau: - + + 2 = 0 Khoảng cách từ O đến AB : Từ 2 điều kiện trên ta cùng với các thông số L, đã tính được ta tìm được 2 giá trị O và O Trường hợp nội suy cung tròn theo chiều kim đồng hồ (CW): Nếu XA>XB, R>0: YO > YI Nếu XA>XB, R<0: YO < YI Nếu XA0: YO < YI Nếu XA YI Nếu XA=XB, YA>YB, R>0: XO < XI Nếu XA=XB, YA>YB, R XI Nếu XA=XB, YA0: XO > XI Nếu XA=XB, YA<YB, R<0: XO < XI Băt đầu Lấy tọa điểm đầu A, điểm cuối B và Bán kính R L = R L= Tính O1(XO1,YO1), O2(XO2,YO2) XA = XB XA > XB R >0 R >0 YA > YB R >0 Tâm O có XO<XI Tâm O có XO>XI R >0 Tâm O có XO>XI Tâm O có XO<XI Tâm O có YO>YI Tâm O có YO<YI Tâm O có YO<YI Tâm O có YO>YI Tâm O có tọa độ Kết thúc N Y N Y N Y Y Y Y Y Y N N N N N Hình 55: Giải thuật nội suy cung tròn ngược chiều kim đồng hồ G02 Trường hợp nội suy cung tròn theo chiều ngược chiều kim đồng hồ (CCW) Nếu XA>XB, R>0: YO < YI Nếu XA>XB, R YI Nếu XA0: YO > YI Nếu XA YI Nếu XA=XB, YA>YB, R>0: XO > XI Nếu XA=XB, YA>YB, R<0: XO < XI Nếu XA=XB, YA0: XO < XI Nếu XA=XB, YA XI Góc phần tư thứ tư X > XO Y < YO O(XO,YO) X Y O(XO,YO) Góc phần tư thứ ba X < XO Y < YO X Y Góc phần tư thứ hai X YO O(XO,YO) X Y Góc phần tư thứ nhất X > XO Y > YO O(XO,YO) X Y Hình 56: Xác định điểm trong hệ tọa độ cực Băt đầu Lấy tọa điểm đầu A, điểm cuối B và Bán kính R L = R L= Tính O1(XO1,YO1), O2(XO2,YO2) XA = XB XA > XB R >0 R >0 YA > YB R >0 Tâm O có XO>XI Tâm O có XO<XI R >0 Tâm O có XO<XI Tâm O có XO>XI Tâm O có YO<YI Tâm O có YO>YI Tâm O có YO>YI Tâm O có YO<YI Tâm O có tọa độ Kết thúc N Y N Y N Y Y Y Y Y Y N N N N N Hình 57: Giải thuật nội suy cung tròn cùng chiều kim đồng hồ G03 V. XÁC ĐỊNH ĐIỂM TRONG HỆ TỌA ĐỘ CỰC V.1.Tính góc của một điểm trong hệ tọa độ cực: Đưa tâm cung tròn O(Xo,Yo) về gốc tạo độ cực, lúc này coi như toạ độ O(0, 0). Chuyển toạ độ điểm A và B sang toạ độ cực A và B sin = (với y=Y- J) =arcsin() Nếu A nằm góc phần tư thứ I (XA>Xo và YA>Yo): chọn Nếu A nằm góc phần tư thứ II (XAYo):chọn =180o- Nếu A nằm góc phần tư thứ III(XA<Xo và YA<Yo): chọn =180o+ Nếu A nằm góc phần tư thứ IV(XA>Xo và YA<Yo): chọn =360o- Tương tự cho : Nếu B nằm góc phần tư thứ I (XB>Xo và YB>Yo): chọn Nếu B nằm góc phần tư thứ II(XBYo):chọn =180o- Nếu B nằm góc phần tư thứ III(XB<Xo và YB<Yo): chọn =180o+ Nếu B nằm góc phần tư thứ IV(XB>Xo và YB<Yo): chọn =360o- X Y O T t A B F M(x,y) Hình 58: Bài toán nội suy cung tròn Bắt đầu X>XO và Y > YO Lấy tọa độ X,Y và XO, YO X YO X<XO và Y < YO X>XO và Y < YO Kết thúc α = arcsin (|(Y-YO) / R|) α = 180O - arcsin (|(Y-YO) / R|) α = 180O +arcsin (|(Y-YO) / R|) α = 360O - arcsin (|(Y-YO) / R|) Y Y Y Y N N N N Hình 59: Lưu đồ giải thuật xác định góc của một điểm trong hệ toạ độ cực Hàm tính tâm O V.2.Tính góc quay của lệnh nội suy cung tròn: - Nếu lệnh nội suy là G02: =- - Nếu lệnh nội suy là G03: =- - Nếu <0: =360o+ Bắt đầu Tính αA, αB Hàm tính góc trong hệ tọa độ cưc Lệnh = G02 a= αB - αA a= αA- αB a< 0 a= a+360 Kết thúc Y Y N N Hình 60: Lưu đồ giải thuật tính góc quay trong hệ tọa độ cực lệnh G02, G03 V.3.Giải thuật nội suy G02,G03: Bắt đầu Tính các đại lượng L,T,N Lệnh = G02 Tính lại XA,YA theo R và αA Tìm tâm O Tính góc αA αB αM = αA+α/N αM>360 αM = αM - 360 αAαB Tính M(XM,YM) theo αM Nội suy thẳng từ A đến M αM>αB Kết thúc αA=αM Tính lại XA,YA theo R và αA αM = αA-α/N αM<0 αM = 360- αM αA>αB và αM<αB Tính M(XM,YM) theo αM Nội suy thẳng từ A đến M αM<αB αA=αM N Y Y Y Y Y Y Y N N N N N N Hình 61: Giải thuật nội suy G02, G03 VI.GIAO DIỆN ĐIỀU KHIỂN BẰNG MÁY TÍNH: Hình 62: Giao diện điều khiển bằng máy tính Phần tải lệnh: Hình 63: Giao diện phần tải lệnh VI.1.Phần hiển thị: Giao diện hiển thị điều khiển bằng máy tính gồm các phần: Tọa độ điểm tức thời: Hiển thị tọa độ của một điểm tại thời gian trong thời gian hoạt động. Ví dụ như chuyển động đường tròn hì tọa độ sẽ được hiển thị thay đổi theo thời gian trên giao diện. Tọa độ điểm đầu và cuối: Khi thực thi một lệnh thì đầu khoan chạy từ điểm đầu đến điểm cuối. Điểm đầu và cuối sẽ được nội suy từ PLC đưa lên hiển thị. Hiển thị bàn máy: Là một khung thể hiện kích thước cũng như các chia khoảng để xác định vị trí đầu khoan ở thời gian hiện tại ở vị trí nào trên bàn máy và những đường được thực thi từ lúc bàn máy hoạt động. Đồ thị hiển thị sự thay đổi vận tốc(mm/s) của hai trục Ox Oy của bàn máy. Sự thay đổi vận tốc theo thời gian tạo nên những đường gia công. VI.2.Phần tập lệnh: Khi viết chương trình ta phải chú ý một số tập lệnh được định sẵn sau đây: Lệnh G00: Cấu trúc: G00 X__Y__ Ý nghĩa: Chạy nhanh dao từ điểm hiện tại đến vị trí tọa độ (X,Y). Dao sẽ được chạy nhanh với vận tốc tối đa là 0.09mm/s. Là phương pháp nội suy đường thẳng G04 từ điểm hiện tại đến điểm (X,Y). Ở lệnh này tốc độ chạy dao không được định nghĩa (tốc độ không đổi là 0.09mm/s) Giới hạn bàn máy: -100 <= X1,X2 <=100 -60 <= X1,X2 <=60 Lệnh G01: Cấu trúc: G01 X__Y__R__L__ Ý nghĩa: Nội suy đường tròn tâm là O(X,Y) bán kính R với tốc độ chạy dao là L. Tốc độ chạy dao tối đa cho phép là 0.09mm/s. Trong cấu trúc lệnh có thể không định nghĩa L, lúc này tốc độ chạy dao sẽ được mặc định là 0.09mm/s. Tốc độ chạy dao: 0 < L <= 0.09mm/s Ví dụ: G01X10 Y0 R-10: Nội suy đường tròn tâm O(10,0) bán kính 10, chạy từ góc 180 độ (bán kính âm). Chú ý: Khi bán kính R dương, đường tròn sẽ được vẽ từ góc O0. Khi bán kính R âm, đường tròn sẽ được vẽ từ góc 1800. Giới hạn bàn máy: Cần tính toán sự phụ thuộc của R,X,Y để cung tròn không vượt giới hạn bàn máy. -100 <= X1,X2 <=100 -60 <= X1,X2 <=60 Lệnh G02: Cấu trúc: G02 X1__Y1__X2__Y2__R__L Ý nghĩa: Nội suy cung tròn ngược chiều kim đồng hồ từ điểm A(X1,Y1) đến điểm B(X2,Y2), bán kính R với tốc độ chạy dao là L. Bán kính R dương hay âm tùy thuộc vào tâm cung tròn nằm bên trong hay bên ngoài đường bao gồm cung tròn và đường thẳng nối hai đầu mút của cung. Tương tự như các lênh khác, chúng ta cũng có thể không định nghĩa L, tốc độ chạy dao sẽ được mặc định nhanh nhất là 0.09mm/s. Tâm O R A B Tâm O R A B Trường hợp 1: R>0 Trường hợp 2: R<0 Hình 64: Nội suy cung tròn G02 Tốc độ chạy dao: 0 < L <= 0.09mm/s Giới hạn bàn máy: Cần tính toán sự phụ thuộc của R,X,Y để cung tròn không vượt giới hạn bàn máy. -100 <= X1,X2 <=100 -60 <= X1,X2 <=60 Lệnh G03: Cấu trúc: G03 X1__Y1__X2__Y2__R__L Ý nghĩa: Nội suy cung tròn cùng chiều kim đồng hồ từ điểm A(X1,Y1) đến điểm B(X2,Y2), bán kính R với tốc độ chạy dao là L. Bán kính R dương hay âm tùy thuộc vào tâm cung tròn nằm bên trong hay bên ngoài đường bao gồm cung tròn và đường thẳng nối hai đầu mút của cung. . Tương tự như các lênh khác, chúng ta cũng có thể không định nghĩa L, tốc độ chạy dao sẽ được mặc định nhanh nhất là 0.09mm/s. Tâm O R A B Trường hợp 1: R>0 Trường hợp 2: R<0 Tâm O R A B Hình 65: Nội suy cung tròn G03 Tốc độ chạy dao: 0 < L <= 0.09mm/s Giới hạn bàn máy: Cần tính toán sự phụ thuộc của R,X,Y để cung tròn không vượt giới hạn bàn máy. -100 <= X1,X2 <=100 -60 <= X1,X2 <=60 Lệnh G04: Cấu trúc: G04 X1__Y1__X2__Y2__L Ý nghĩa: Nội suy đoạn thẳng từ điểm A(X1,Y1) đến điểm B(X2,Y2) với tốc độ chạy dao L. Tốc độ chạy dao: 0 < L <= 0.09mm/s Giới hạn của bàn máy: -100 <= X1,X2 <=100 -60 <= X1,X2 <=60 Lệnh STA: Cấu trúc: STA Ý nghĩa: Di chuyển mũi đầu khoan đi xuống bàn máy, thực hiện gia công khoan phôi. Lệnh STO: Cấu trúc: STO Ý nghĩa: Dịch chuyển mũi đầu khoan đi lên cách bàn máy một khoảng cố định, không thực hiện khoan phôi. VI.3.Phần tải lệnh từ tập tin Excel: Gồm các mục : Chọn ổ đĩa Chọn thư mục Chọn tập tin Tập lệnh sau khi được load Phần này sẽ giảm đi sai sót cho người viết chương trình. Chương trình sẽ được người viết viết bằng file dữ liệu Excel, sau đó sẽ được load vào tập lệnh. Chú ý: Tập tin được load phải định dạng cơ sở dữ liệu Excel, nghĩa là chỉ load file Exel. VI.4.Giản đồ xung kết nối hoạt động giữa máy tính và PLC: 0 1 t 0 1 t 0 1 t Thời gian thực hiện lệnh G Bộ định thời 1 Bộ định thời 2 Hình 66: Giản đồ xung kết nối giữa máy tính và PLC VI.5.Giải thuật kết nối hoạt động giữa máy tính và VB: Bắt đầu Bit G = 0 Viết giá trị vào các đại lượng Set bit VB Bit VB =0 Khởi động bộ định thời1:1ms Bit G = 1 Khởi động bộ định thời2:1ms Bit G = 0 Tăng lệnh lên 1 Reset bit VB Kết thúc Dừng định thời Y Y Y Y N N N N Hình 67: Giải thuật kết nối giữa máy tính và VB PHẦN 3: KẾT LUẬN I.NHỮNG KẾT QUẢ ĐẠT ĐƯỢC KHI LÀM LUẬN VĂN: Qua việc tìm hiều và nghiên cứu đề tài em thu được những kết quả: Vấn đề về lý thuyết được học từ trước được áp dụng thực tế rất hiệu quả. Việc tìm hiểu những phần mềm cũng như những cấu trúc giao tiếp giữa các thiết bị với phần mềm. Các phương pháp nội suy trong toán học áp dụng cho phương pháp điều khiển số. Hiểu được những chức năng cũng như cấu trúc và hoạt động của máy CNC Ứng dụng bộ điều khiển PID S7-200 điều khiển các quá trình. Dùng ngôn ngữ VB có ứng dụng rộng và ngôn ngữ lập trình đơn giản để điều khiển các quá trình dụa vào OPC VB. II.NHỮNG KẾT QUẢ CHƯA ĐẠT ĐƯỢC: Điều khiển bàn máy chuyển động với tốc độ nhanh hơn. Ở vấn đề này ta cần phải dùng các thiết bị điều khiển với tốc độ xử lí nhanh hơn, độ chính xác cao hơn. Dùng bộ kết nối và truyền dữ liệu giữa bộ điều khiển và máy tính với tốc độ chưa cao, vì vậy việc xử lí chuyển đổi giữa các lệnh chậm. Ứng dụng bộ điều khiển PID cho vị trí động cơ với các thông số của động cơ chưa hoàn toàn chính xác. DANH MỤC TÀI LIỆU THAM KHẢO: 1.Giáo trình Điều khiển CNC, Châu Mạnh Lực,ĐH Bách khoa Đà Nẵng, 2.Giáo trình Điều khiển số, Đại học Bách khoa Tp.Hồ Chí Minh 3.Giáo trình Lý thuyết điều khiển tự động, Nguyễn Thị Phương Hà, Đại học Bách khoa Tp.Hồ Chí Minh. 4.Bộ User Guide Matlab 5.website: www.opcsystems.com/OPCforVB.htm PHỤC LỤC CODE PHẦN MỀM I.CODE VISUAL BASIC: Code Form1: Dim t As Double Dim i As Integer Private Sub CommandCHEN_Click() If Val(ListLENH.ListIndex) -1 Then TextLenh.Text = LTrim(RTrim(TextLenh.Text)) If TextLenh.Text "" Then ListLENH.AddItem TextLenh.Text, ListLENH.ListIndex TextLenh.Text = "" End If End If End Sub Private Sub CommandTAILENH_Click() Form1.Enabled = False Form1.Visible = False Form2.Enabled = True Form2.Visible = True End Sub Private Sub CommandDUNG_Click() TimerCONHO.Enabled = False TimerHOATDONG.Enabled = False FastOPCControl1.WriteValue 0, "S7200.OPCServer\MicroWin.PLC.CUNG_D" FastOPCControl1.WriteValue 0, "S7200.OPCServer\MicroWin.PLC.CUNG_A" FastOPCControl1.WriteValue 0, "S7200.OPCServer\MicroWin.PLC.TRON" FastOPCControl1.WriteValue 0, "S7200.OPCServer\MicroWin.PLC.THANG" FastOPCControl1.WriteValue 0, "S7200.OPCServer\MicroWin.PLC.KHOAN" FastOPCControl1.WriteValue 0, "S7200.OPCServer\MicroWin.PLC.STOP_KHOAN" ListLENH.Clear LabelTHUTULENH.Caption = "0" End Sub Private Sub Commandhoatdong_Click() TimerHOATDONG.Enabled = True TimerCONHO.Enabled = True End Sub Private Sub CommandTAMDUNG_Click() TimerCONHO.Enabled = False TimerHOATDONG.Enabled = False FastOPCControl1.WriteValue 0, "S7200.OPCServer\MicroWin.PLC.CUNG_D" FastOPCControl1.WriteValue 0, "S7200.OPCServer\MicroWin.PLC.CUNG_A" FastOPCControl1.WriteValue 0, "S7200.OPCServer\MicroWin.PLC.TRON" FastOPCControl1.WriteValue 0, "S7200.OPCServer\MicroWin.PLC.THANG" FastOPCControl1.WriteValue 0, "S7200.OPCServer\MicroWin.PLC.KHOAN" FastOPCControl1.WriteValue 0, "S7200.OPCServer\MicroWin.PLC.STOP_KHOAN" FastOPCControl1.WriteValue 0, "S7200.OPCServer\MicroWin.PLC.START" TextG00.Text = "0" TextG01.Text = "0" TextG02.Text = "0" TextG03.Text = "0" TextG04.Text = "0" End Sub Private Sub CommandThoat_Click() Unload Me Unload Form2 End Sub Private Sub CommandXOALENH_Click() If ListLENH.SelCount 0 Then ListLENH.RemoveItem (ListLENH.ListIndex) End If End Sub Private Sub CommandNHAPLENH_Click() TextLenh.Text = LTrim(RTrim(TextLenh.Text)) If TextLenh.Text "" Then ListLENH.AddItem (TextLenh.Text) TextLenh.Text = "" End If End Sub Private Sub LabelVTX_Change() TChart1.Series(0).Add Abs(Val(LabelVTX.Caption)), i, vbRed TChart1.Series(1).Add Abs(Val(LabelVTY.Caption)), i, vbBlue If i > 50 Then TChart1.Axis.Bottom.Minimum = i - 50 TChart1.Axis.Bottom.Maximum = i End If i = i + 1 End Sub Private Sub LabelX1_Change() LabelX11.Caption = Val(LabelX1.Caption) / 4000 LabelY11.Caption = Val(LabelY1.Caption) / 4000 End Sub Private Sub LabelX22_Change() LabelX2.Caption = Val(LabelX22.Caption) * 4000 LabelY2.Caption = Val(LabelY22.Caption) * 4000 LabelX3.Caption = Val(LabelX33.Caption) * 4000 LabelY3.Caption = Val(LabelY33.Caption) * 4000 End Sub Private Sub LabelY11_Change() If LabelCONHO.Caption = "True" Then TChart2.Series(0).AddXY Val(LabelX11.Caption), Val(LabelY11.Caption), "", vbBlue End If End Sub Private Sub LabelZ1_Change() LabelZ11.Caption = Val(LabelZ1.Caption) / 100 End Sub Private Sub TextLenh_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then TextLenh.Text = LTrim(RTrim(TextLenh.Text)) If TextLenh.Text "" Then ListLENH.AddItem (TextLenh.Text) TextLenh.Text = "" End If End If End Sub Private Sub Timer1G00_Timer() If FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.THANG") = "True" Then Timer2G00.Enabled = True Timer1G00.Enabled = False End If End Sub Private Sub Timer1G01_Timer() If FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.TRON") = "True" Then Timer2G01.Enabled = True Timer1G01.Enabled = False End If End Sub Private Sub Timer1G02_Timer() If FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.CUNG_D") = "True" Then Timer2G02.Enabled = True Timer1G02.Enabled = False End If End Sub Private Sub Timer1G03_Timer() If FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.CUNG_A") = "True" Then Timer2G03.Enabled = True Timer1G03.Enabled = False End If End Sub Private Sub Timer1G04_Timer() If FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.THANG") = "True" Then Timer2G04.Enabled = True Timer1G04.Enabled = False End If End Sub Private Sub Timer1STA_Timer() If FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.KHOAN") = "True" Then Timer2STA.Enabled = True Timer1STA.Enabled = False End If End Sub Private Sub Timer1STO_Timer() If FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.STOP_KHOAN") = "True" Then Timer2STO.Enabled = True Timer1STO.Enabled = False End If End Sub Private Sub Timer2G00_Timer() If FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.THANG") = "False" Then TimerHOATDONG.Enabled = True TextG00.Text = "0" LabelTHUTULENH.Caption = Val(LabelTHUTULENH.Caption) + 1 Timer2G00.Enabled = False End If End Sub Private Sub Timer2G01_Timer() If FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.TRON") = "False" Then TimerHOATDONG.Enabled = True TextG01.Text = "0" LabelTHUTULENH.Caption = Val(LabelTHUTULENH.Caption) + 1 Timer2G01.Enabled = False End If End Sub Private Sub Timer2G02_Timer() If FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.CUNG_D") = "False" Then TimerHOATDONG.Enabled = True TextG02.Text = "0" LabelTHUTULENH.Caption = Val(LabelTHUTULENH.Caption) + 1 Timer2G02.Enabled = False End If End Sub Private Sub Timer2G03_Timer() If FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.CUNG_A") = "False" Then TimerHOATDONG.Enabled = True TextG03.Text = "0" LabelTHUTULENH.Caption = Val(LabelTHUTULENH.Caption) + 1 Timer2G03.Enabled = False End If End Sub Private Sub Timer2G04_Timer() If FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.THANG") = "False" Then TimerHOATDONG.Enabled = True TextG04.Text = "0" LabelTHUTULENH.Caption = Val(LabelTHUTULENH.Caption) + 1 Timer2G04.Enabled = False End If End Sub Private Sub Timer2STA_Timer() If FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.KHOAN") = "False" Then TimerHOATDONG.Enabled = True TextSTA.Text = "0" LabelTHUTULENH.Caption = Val(LabelTHUTULENH.Caption) + 1 Timer2STA.Enabled = False End If End Sub Private Sub Timer2STO_Timer() If FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.STOP_KHOAN") = "False" Then TimerHOATDONG.Enabled = True TextSTO.Text = "0" LabelTHUTULENH.Caption = Val(LabelTHUTULENH.Caption) + 1 Timer2STO.Enabled = False End If End Sub Private Sub TimerCONHO_Timer() LabelCONHO.Caption = FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.START") LabelX1.Caption = FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.XungX_Main") LabelY1.Caption = FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.XungY_Main") LabelZ1.Caption = FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.XungZ_Main") If (Val(LabelTHUTULENH.Caption) 0) And ((Val(LabelTHUTULENH.Caption) - Val(ListLENH.NewIndex)) <= 1) Then End If LabelVTX.Caption = FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.VantocX") / 4000 LabelVTY.Caption = FastOPCControl1.GetValue("S7200.OPCServer\MicroWin.PLC.VantocY") / 4000 If Val(ListLENH.ListCount) 0 And ((Val(ListLENH.NewIndex) + 1) > Val(LabelTHUTULENH.Caption)) Then ListLENH.Selected(Val(LabelTHUTULENH.Caption)) = True End If End Sub Private Sub Timerh_Timer() Labelh.Caption = Hour(Now()) & " : " & Minute(Now()) & " : " & Second(Now()) End Sub Private Sub TimerHOATDONG_Timer() lenh = Left(RTrim(LTrim(UCase(ListLENH.List(Val(LabelTHUTULENH.Caption))))), 3) Select Case lenh Case "G00": s = ListLENH.List(Val(LabelTHUTULENH.Caption)) s = UCase(s) s = LTrim(s) s = RTrim(s) X = "X" t1 = InStr(1, s, X, vbTextCompare) Y = "Y" t2 = InStr(1, s, Y, vbTextCompare) l = "L" t3 = InStr(1, s1, l, vbTextCompare) If t1 = 0 Or t2 = 0 Then LabelTHUTULENH.Caption = Val(LabelTHUTULENH.Caption) + 1 Else xB = Val(Right(s, Len(s) - t1)) yB = Val(Right(s, Len(s) - t2)) If t5 0 Then xL = Val(Right(s, Len(s) - t5)) Else xL = 0.09 End If If Val(TextG00.Text) = 0 Then xA = Val(LabelX11.Caption) yA = Val(LabelY11.Caption) LabelX22.Caption = xA LabelY22.Caption = yA LabelX33.Caption = xB LabelY33.Caption = yB FastOPCControl1.WriteValue xL, "S7200.OPCServer\MicroWin.PLC.L" FastOPCControl1.WriteValue xA, "S7200.OPCServer\MicroWin.PLC.xA" FastOPCControl1.WriteValue yA, "S7200.OPCServer\MicroWin.PLC.yA" FastOPCControl1.WriteValue xB, "S7200.OPCServer\MicroWin.PLC.xB" FastOPCControl1.WriteValue yB, "S7200.OPCServer\MicroWin.PLC.yB" FastOPCControl1.WriteValue 1, "S7200.OPCServer\MicroWin.PLC.THANG" TextG00.Text = "1" TimerHOATDONG.Enabled = False Timer1G00.Enabled = True End If End If Case "G01": s = ListLENH.List(Val(LabelTHUTULENH.Caption)) s = UCase(s) s = LTrim(s) s = RTrim(s) X = "X" t1 = InStr(1, s, X, vbTextCompare) Y = "Y" t2 = InStr(1, s, Y, vbTextCompare) R = "R" t3 = InStr(1, s, R, vbTextCompare) l = "L" t4 = InStr(1, s, l, vbTextCompare) If t1 = 0 Or t2 = 0 Or t3 = 0 Then LabelTHUTULENH.Caption = Val(LabelTHUTULENH.Caption) + 1 Else xO = Val(Right(s, Len(s) - t1)) yO = Val(Right(s, Len(s) - t2)) xR = Val(Right(s, Len(s) - t3)) If t4 0 Then xL = Val(Right(s, Len(s) - t4)) Else xL = 0.09 End If If Val(TextG01.Text) = 0 Then FastOPCControl1.WriteValue xR, "S7200.OPCServer\MicroWin.PLC._R" FastOPCControl1.WriteValue xO, "S7200.OPCServer\MicroWin.PLC.xO" FastOPCControl1.WriteValue yO, "S7200.OPCServer\MicroWin.PLC.yO" FastOPCControl1.WriteValue xL, "S7200.OPCServer\MicroWin.PLC.L" FastOPCControl1.WriteValue 1, "S7200.OPCServer\MicroWin.PLC.TRON" TextG01.Text = "1" TimerHOATDONG.Enabled = False Timer1G01.Enabled = True End If End If Case "G02": s = ListLENH.List(Val(LabelTHUTULENH.Caption)) X = "X" t1 = InStr(1, s, X, vbTextCompare) Y = "Y" t2 = InStr(1, s, Y, vbTextCompare) l = "L" R = "R" s1 = Right(s, Len(s) - t2) t3 = InStr(1, s1, X, vbTextCompare) t4 = InStr(1, s1, Y, vbTextCompare) t5 = InStr(1, s1, R, vbTextCompare) t6 = InStr(1, s1, l, vbTextCompare) If t1 = 0 Or t2 = 0 Or t3 = 0 Or t4 = 0 Or t5 = 0 Then LabelTHUTULENH.Caption = Val(LabelTHUTULENH.Caption) + 1 Else xA = Val(Right(s, Len(s) - t1)) yA = Val(Right(s, Len(s) - t2)) xB = Val(Right(s1, Len(s1) - t3)) yB = Val(Right(s1, Len(s1) - t4)) xR = Val(Right(s1, Len(s1) - t5)) If t6 0 Then xL = Val(Right(s1, Len(s1) - t6)) Else xL = 0.09 End If LabelX22.Caption = xA LabelY22.Caption = yA LabelX33.Caption = xB LabelY33.Caption = yB If Val(TextG02.Text) = 0 Then FastOPCControl1.WriteValue xR, "S7200.OPCServer\MicroWin.PLC._R" FastOPCControl1.WriteValue xA, "S7200.OPCServer\MicroWin.PLC.xA" FastOPCControl1.WriteValue yA, "S7200.OPCServer\MicroWin.PLC.yA" FastOPCControl1.WriteValue xB, "S7200.OPCServer\MicroWin.PLC.xB" FastOPCControl1.WriteValue yB, "S7200.OPCServer\MicroWin.PLC.yB" FastOPCControl1.WriteValue xL, "S7200.OPCServer\MicroWin.PLC.L" FastOPCControl1.WriteValue 1, "S7200.OPCServer\MicroWin.PLC.CUNG_D" TextG02.Text = "1" TimerHOATDONG.Enabled = False Timer1G02.Enabled = True End If End If Case "G03": s = ListLENH.List(Val(LabelTHUTULENH.Caption)) X = "X" t1 = InStr(1, s, X, vbTextCompare) Y = "Y" t2 = InStr(1, s, Y, vbTextCompare) l = "L" R = "R" s1 = Right(s, Len(s) - t2) t3 = InStr(1, s1, X, vbTextCompare) t4 = InStr(1, s1, Y, vbTextCompare) t5 = InStr(1, s1, R, vbTextCompare) t6 = InStr(1, s1, l, vbTextCompare) If t1 = 0 Or t2 = 0 Or t3 = 0 Or t4 = 0 Or t5 = 0 Then LabelTHUTULENH.Caption = Val(LabelTHUTULENH.Caption) + 1 Else xA = Val(Right(s, Len(s) - t1)) yA = Val(Right(s, Len(s) - t2)) xB = Val(Right(s1, Len(s1) - t3)) yB = Val(Right(s1, Len(s1) - t4)) xR = Val(Right(s1, Len(s1) - t5)) If t6 0 Then xL = Val(Right(s1, Len(s1) - t6)) Else xL = 0.09 End If LabelX22.Caption = xA LabelY22.Caption = yA LabelX33.Caption = xB LabelY33.Caption = yB If Val(TextG03.Text) = 0 Then FastOPCControl1.WriteValue xR, "S7200.OPCServer\MicroWin.PLC._R" FastOPCControl1.WriteValue xA, "S7200.OPCServer\MicroWin.PLC.xA" FastOPCControl1.WriteValue yA, "S7200.OPCServer\MicroWin.PLC.yA" FastOPCControl1.WriteValue xB, "S7200.OPCServer\MicroWin.PLC.xB" FastOPCControl1.WriteValue yB, "S7200.OPCServer\MicroWin.PLC.yB" FastOPCControl1.WriteValue xL, "S7200.OPCServer\MicroWin.PLC.L" FastOPCControl1.WriteValue 1, "S7200.OPCServer\MicroWin.PLC.CUNG_A" TextG03.Text = "1" TimerHOATDONG.Enabled = False Timer1G03.Enabled = True End If End If Case "G04": s = ListLENH.List(Val(LabelTHUTULENH.Caption)) s = UCase(s) s = LTrim(s) s = RTrim(s) X = "X" t1 = InStr(1, s, X, vbTextCompare) Y = "Y" t2 = InStr(1, s, Y, vbTextCompare) l = "L" s1 = Right(s, Len(s) - t2) t3 = InStr(1, s1, X, vbTextCompare) t4 = InStr(1, s1, Y, vbTextCompare) t5 = InStr(1, s1, l, vbTextCompare) If t1 = 0 Or t2 = 0 Or t3 = 0 Or t4 = 0 Then LabelTHUTULENH.Caption = Val(LabelTHUTULENH.Caption) + 1 Else xA = Val(Right(s, Len(s) - t1)) yA = Val(Right(s, Len(s) - t2)) xB = Val(Right(s1, Len(s1) - t3)) yB = Val(Right(s1, Len(s1) - t4)) If t5 0 Then xL = Val(Right(s1, Len(s1) - t5)) Else xL = 0.09 End If LabelX22.Caption = xA LabelY22.Caption = yA LabelX33.Caption = xB LabelY33.Caption = yB If Val(TextG04.Text) = 0 Then FastOPCControl1.WriteValue xL, "S7200.OPCServer\MicroWin.PLC.L" FastOPCControl1.WriteValue xA, "S7200.OPCServer\MicroWin.PLC.xA" FastOPCControl1.WriteValue yA, "S7200.OPCServer\MicroWin.PLC.yA" FastOPCControl1.WriteValue xB, "S7200.OPCServer\MicroWin.PLC.xB" FastOPCControl1.WriteValue yB, "S7200.OPCServer\MicroWin.PLC.yB" FastOPCControl1.WriteValue 2, "S7200.OPCServer\MicroWin.PLC.THANG" If (yA = yB) Or (xA = xB) Then FastOPCControl1.WriteValue 2, "S7200.OPCServer\MicroWin.PLC.THANG" End If TextG04.Text = "1" TimerHOATDONG.Enabled = False Timer1G04.Enabled = True End If End If Case "STA": If Val(TextSTA.Text) = 0 Then FastOPCControl1.WriteValue 1, "S7200.OPCServer\MicroWin.PLC.KHOAN" TextSTA.Text = 1 TimerHOATDONG.Enabled = False Timer1STA.Enabled = True End If Case "STO": If Val(TextSTO.Text) = 0 Then FastOPCControl1.WriteValue 1, "S7200.OPCServer\MicroWin.PLC.STOP_KHOAN" TextSTO.Text = 1 TimerHOATDONG.Enabled = False Timer1STO.Enabled = True End If Case Else If Val(LabelTHUTULENH.Caption) < Val(ListLENH.ListCount) Then LabelTHUTULENH.Caption = Val(LabelTHUTULENH.Caption) + 1 End If End Select End Sub Code Form2: Private Sub Command1_Click() If Form2.ListLENH.ListCount 0 Then For i = 0 To (Form2.ListLENH.ListCount - 1) Form1.ListLENH.AddItem Form2.ListLENH.List(i) Next i End If Form2.Enabled = False Form2.Visible = False Form1.Enabled = True Form1.Visible = True End Sub Private Sub Command2_Click() Form2.Enabled = False Form2.Visible = False Form1.Enabled = True Form1.Visible = True End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub Private Sub Drive1_Change() Dir1.Path = Drive1.Drive End Sub Private Sub File1_Click() ListLENH.Clear FileName = File1.Path + "\" + File1.FileName Workbooks.Open (FileName) i = 1 Do While Worksheets("sheet1").Cells(i, 1).Value "" ListLENH.AddItem (Worksheets("sheet1").Cells(i, 1)) i = i + 1 Loop Workbooks.Close End Sub II.CODE MICROWIN 4.0 Vì chương trình có kích thước lớn, Tham khảo đĩa kèm theo III. File PC Access:

Các file đính kèm theo tài liệu này:

  • docxHoanCHinh.docx
  • pptxBaocao.pptx
  • docBia.doc
  • rarcode.part1.rar
  • rarcode.part2.rar
  • docHoanCHinh.doc
  • pptHoanChinh.ppt
  • pptPhu.ppt
  • dbThumbs.db