THIẾT KẾ BỘ ĐIỀU KHIỂN VỊ TRÍ PID CHO 2 TRỤC ĐỘNG CƠ
Các bước thiết kế bộ điều khiển
- B1: Đặt giá trị Setpoint là tín hiệu Step, biên độ là 1
Quan sát đáp ứng đầu ra của hai trục và giá trị 𝑈 𝑑𝑘 Khi 𝑈 𝑑𝑘 đạt giá trị cho phép, tiến hành tinh chỉnh hệ số 𝐾 𝑑 của bộ điều khiển để đảm bảo yêu cầu về thời gian xác lập và độ quá điều chỉnh.
Hình 2 1 Mô hình mô phỏng Matlab Simulink
Thiết kế bộ điều khiển
Sau khi thực hiện các bước như trên, ta thu được bộ điều khiển vị trí động cơ theo trục x với các thông số: 𝐾 𝑝 = 10, 𝑇 𝑑 = 0.005
Bài tập lớn môn điều khiển máy CNC, máy CNC hai trục X và Y, mỗi trục có một động cơ Bài tập này giúp sinh viên hiểu rõ hơn về nguyên lý hoạt động và cách lập trình cho máy CNC Thực hành trên máy CNC hai trục sẽ nâng cao kỹ năng điều khiển và ứng dụng công nghệ trong sản xuất.
Ta thu được kết quả mô phỏng:
Hình 2 2 Đáp ứng vị trí của bộ điều khiển theo trục x
▪ Đáp ứng đầu ra của động cơ theo trục x bám sát giá trị đặt
▪ Có sai lệch tĩnh xấp xỉ 0 từ thời điểm t = 0.45s
Hình 2 3 Điện áp điều khiển trục x
Nhận xét: Điện áp điều khiển < 10V
→ Từ những nhận xét trên ta kết luận: Bộ điều khiển vị trí theo trục x thỏa mãn yêu cầu đề bài
Sau khi thực hiện các bước như trên, ta thu được bộ điều khiển vị trí động cơ theo trục x với các thông số: 𝐾 𝑝 = 10, 𝑇 𝑑 = 0.025
Ta thu được kết quả mô phỏng:
Bài tập lớn môn hệ thống điều khiển máy CNC, máy CNC hai trục X và Y, mỗi trục có một động cơ.
Hình 2 4 Đáp ứng vị trí của bộ điều khiển theo trục y
Nhận xét: ▪ Đáp ứng đầu ra của động cơ theo trục y bám sát giá trị đặt
▪ Có sai lệch tĩnh xấp xỉ 0 từ thời điểm t = 0.45s
Hình 2 5 Điện áp điều khiển theo trục y
Nhận xét: Điện áp điều khiển < 10V
→ Từ những nhận xét trên ta kết luận: Bộ điều khiển vị trí theo trục x thỏa mãn yêu cầu đề bài
NỘI SUY ĐƯỜNG THẲNG
Cấu trúc bộ điều khiển trung tâm
Sử dụng cấu trúc ADCBI: thực hiện tăng tốc/giảm tốc trước khi nội suy.
Look Ahead
• Quỹ đạo chuyển động được phân chia thành các khối
• Tính toán tốc độ tại điểm bắt đầu và điểm kết thúc của một khối dựa vào các khối được thực hiện sau nó
Xác định dạng profile vận tốc là dạng normal block (dạng hình thang) gồm 3 quá trình: tăng tốc, vận tốc không đổi, giảm tốc.
Tính toán thời gian tăng tốc, giảm tốc, vận tốc không đổi
Thông số profile vận tốc:
• Chiều dài: L= 50 (mm), đi từ A(10,10) đến B(50,40)
• Gia tốc tăng tốc cho phép : A=2 (mm/s 2 )
Bài tập lớn môn hệ thống điều khiển máy CNC hai trục X và Y, mỗi trục có một động cơ.
• Gia tốc giảm tốc cho phép: D=2 (mm/s 2 )
• Chu kỳ nội suy: =5 (ms)
• Tốc độ ăn dao: F=5 (mm/s)
Với profile vận tốc dạng normal block ta có công thức tính như sau:
Tăng tốc Giảm tốc Vận tốc không đổi Tính toán thời gian tăng tốc 𝑇 𝐴 , giảm tốc 𝑇 𝐷 , vận tốc không đổi 𝑇 𝐶
Nội suy vận tốc
Sau quá trình tính toán nội suy ta thu được đồ thị vận tốc như sau:
Nội suy lệnh đặt cho đường thẳng (trích mẫu dữ liệu)
Sử dụng phương pháp trích mẫu dữ liệu như sau:
Từ công thức nội suy tăng tốc: 𝑉 𝐴,𝑖+1 = 𝑉 𝐴,𝑖 + 𝜏𝐴, ta thu được bảng kết quả: i 𝑽 𝑨,𝒊
Bài tập lớn môn hệ thống điều khiển máy CNC, máy CNC hai trục X, Y, mỗi trục có một động cơ.
Do vận tốc không đổi, ta thu được bảng kết quả: i 𝑽 𝑪,𝒊
Từ công thức nội suy giảm tốc: 𝑉 𝐷,𝑖+1 = 𝑉 𝐷,𝑖 − 𝜏𝐷, ta thu được bảng kết quả: i 𝑽 𝑫,𝒊
Sau khi nội suy thu được quỹ đạo đi từ: A(10,10) đến B(50,40) như sau:
Nội suy tinh
Do chu kỳ trích mẫu nội suy lớn hơn chu kỳ trích mẫu bộ điều khiển vị trí ( 𝑇 𝑛𝑠
Để tối ưu hóa quá trình trích mẫu nội suy, cần chia nhỏ các giá trị chu kỳ trích mẫu thành các chu kỳ trích mẫu điều khiển Việc này bao gồm xác định các giá trị ở giữa chu kỳ trích mẫu nội suy và chia nhỏ khoảng dịch chuyển ∆𝐿.
Vận tốc không đổi Giảm tốc
Bài tập lớn môn hệ thống điều khiển máy CNC hai trục X và Y, mỗi trục có một động cơ.
3.6.1 Nội suy tuyến tính Áp dụng công thức:
𝑁 , 𝑖 ≤ 𝑗 < 𝑖 + 𝑡 𝑖𝑝𝑜 Với 𝑎(𝑗) là khoảng dịch chuyển thứ j thu được khi nội suy tuyến tính, 𝑝(𝑖) là khoảng dịch chuyển tổng ∆𝐿 thứ i, 𝑡 𝑖𝑝𝑜 là thời gian lặp lại của phép nội suy thô, 𝑁 = 𝑇 𝑛𝑠
Dưới đây là đồ thị khoảng dịch chuyển của phương pháp tuyến tính, được so sánh với đồ thị nội suy thô ở phía trên.
Từ đồ thị khoảng dịch chuyển thu được từ phương pháp tuyến tính, áp dụng công thức:
2 Với 𝑎(𝑗 − 𝑘) là giá trị tại thời điểm (𝑗 − 𝑘) của phương pháp tuyến tính, 𝑁 = 𝑇 𝑛𝑠
Ta thu được bảng giá trị một số chu kỳ (đơn vị 𝑎(𝑗 ± 𝑘), 𝑏 0,1,2 (𝑗): × 10 −2 (𝑚𝑚) n j a(j +
Bài tập lớn môn hệ thống điều khiển máy CNC, máy CNC hai trục X-Y, mỗi trục có 1 động cơ Bài tập này giúp sinh viên hiểu rõ hơn về nguyên lý hoạt động và ứng dụng của hệ thống điều khiển trong máy CNC Thông qua việc thực hành, sinh viên sẽ nắm bắt được cách thức điều khiển các trục và tối ưu hóa quy trình sản xuất.
Kết quả thu được từ đồ thị khoảng dịch chuyển của phương pháp trung bình (đồ thị dưới) so với đồ thị phương pháp tuyến tính (đồ thị trên) cho thấy sự khác biệt rõ rệt giữa hai phương pháp.
3.6.3 Quỹ đạo sau nội suy tinh
Sau khi áp dụng hai phương pháp trước đó, chúng ta sử dụng khoảng dịch chuyển đã được nội suy tinh để thực hiện nội suy sai lệch đường thẳng Quá trình này cho ra quỹ đạo thu được như sau:
So sánh với quỹ đạo nội suy thô:
Bài tập lớn môn điều khiển máy CNC, máy CNC hai trục X và Y, mỗi trục có một động cơ Bài tập này nhằm mục đích giúp sinh viên hiểu rõ hơn về nguyên lý hoạt động của máy CNC, cách điều khiển và lập trình cho các trục chuyển động Việc thực hành trên máy CNC sẽ trang bị cho sinh viên những kỹ năng cần thiết trong ngành công nghiệp chế tạo.
Thực hiện điều khiển vị trí
Sau khi hoàn thành quỹ đạo nội suy cuối cùng, chúng ta sử dụng quỹ đạo này làm đầu vào (setpoint) cho bộ điều khiển vị trí với cấu trúc mạch vòng điều khiển.
Tuy nhiên, do yêu cầu đề bài, ta sẽ bỏ qua mạch vòng dòng điện và mạch vòng tốc độ, bộ điều khiển vị trí là bộ PD
Mạch vòng thiết kế trên simulink:
Ta thu được các kết quả: Đồ thị quỹ đạo đầu ra:
19 Đồ thị so sánh quỹ đạo vào/ra theo thời gian: Đồ thị so sánh quỹ đạo vào/ra vận tốc theo thời gian:
Bài tập lớn môn hệ thống điều khiển máy CNC, máy CNC hai trục X-Y, mỗi trục có một động cơ.
20 Đồ thị tín hiệu điều khiển (điện áp):
21 Đồ thị sai số khi điều khiển:
Biểu diễn 3 đường theo yêu cầu bài toán:
Bài tập lớn môn hệ thống điều khiển máy CNC hai trục X và Y, mỗi trục có một động cơ.
NỘI SUY ĐƯỜNG TRÒN
Tính toán thời gian tăng tốc, giảm tốc, vận tốc không đổi
Thông số profile vận tốc:
• Gia tốc tăng tốc cho phép : A=2 (mm/s 2 )
• Gia tốc giảm tốc cho phép: D=2 (mm/s 2 )
• Chu kỳ nội suy: =5 (ms)
• Tốc độ ăn dao: F=5 (mm/s)
Với profile vận tốc dạng normal block ta có công thức tính như sau:
Nội suy (mm/s) 𝑉 𝐴,𝑖+1 = 𝑉 𝐴,𝑖 + 𝜏𝐴 𝑉 𝐷,𝑖+1 = 𝑉 𝐷,𝑖 − 𝜏𝐷 Tốc độ góc nội suy
𝑅 Nội suy góc 𝛼 (𝛼 là góc giữa 2 điểm cần nội suy trên cung tròn) (rad)
Từ bảng trên, chúng ta có thể xác định tổng góc 𝜶 trong quá trình tăng tốc và giảm tốc Dựa vào đó, có thể tính toán chiều dài và thời gian khi tốc độ được giữ cố định.
• Tốc độ góc khi vận tốc không đổi: 𝝎 𝑪 = 𝑭
• Chiều dài cung tròn di chuyển: 𝜶 𝑪 = 𝝋 − (∑ 𝜶 𝑨 + ∑ 𝜶 𝑫 )
Nội suy vận tốc
Sau quá trình tính toán nội suy ta thu được đồ thị vận tốc như sau:
Bài tập lớn môn hệ thống điều khiển máy CNC hai trục X và Y, mỗi trục có một động cơ, tập trung vào việc áp dụng các nguyên lý điều khiển để tối ưu hóa hoạt động của máy Nội dung bài tập yêu cầu sinh viên nghiên cứu và phát triển các giải pháp điều khiển hiệu quả cho máy CNC, nhằm nâng cao độ chính xác và hiệu suất gia công Qua đó, sinh viên sẽ nắm vững kiến thức về hệ thống điều khiển, từ đó áp dụng vào thực tiễn trong ngành công nghiệp chế tạo.
Nội suy sai lệch đặt cho đường tròn
Ta có thể nội suy tọa độ X,Y từ hình dưới đây: Đặt A=cos(𝜶), B=sin(𝜶), từ hình trên ta có thể tính toán:
→ 𝒀 𝒊+𝟏 = 𝒀 𝒕 − (𝒀 𝒕 − 𝒀 𝒊 ) 𝑨 + (𝑿 𝒊 − 𝑿 𝒕 ) 𝑩 Trong đó 𝑿 𝒕 , 𝒀 𝒕 lần lượt là hoành độ và tung độ của tâm đường tròn X
Sau khi sử dụng MATLAB để thực hiện nội suy đường tròn, ta thu được kết quả sau đây:
Bài tập lớn môn hệ thống điều khiển máy CNC, máy CNC hai trục X và Y, mỗi trục có một động cơ.
Nội suy tinh
Tương tự như việc nội suy tinh với đường thẳng, chúng tôi tiến hành nội suy tinh quỹ đạo hình tròn bằng hai phương pháp khác nhau Kết quả thu được là bảng số liệu cho một số chu kỳ, với các đơn vị được biểu diễn là 𝑎(𝑗 ± 𝑘), 𝑏 0,1,2 (𝑗): × 10 −2 (𝑚𝑚) Bảng kết quả bao gồm các giá trị n alpha j và các giá trị a từ a( j + 5) đến a( j -2), cùng với b( j) và các giá trị b1(j), b2(j).
Vận tốc không đổi Giảm tốc
… Đồ thị so sánh độ dịch chuyển quỹ đạo nội suy thô, nội suy tinh tuyến tính và nội suy tinh trung bình:
Bài tập lớn môn điều khiển máy CNC, máy CNC hai trục X và Y, mỗi trục có một động cơ Bài tập này nhằm nghiên cứu và ứng dụng các nguyên lý điều khiển trong hệ thống máy CNC, giúp sinh viên hiểu rõ hơn về cấu trúc và hoạt động của máy CNC hai trục Nội dung bài tập sẽ tập trung vào việc lập trình và điều khiển các chuyển động của máy CNC để thực hiện các thao tác gia công chính xác.
So sánh với giá trị nội suy thô: Đưa quỹ đạo sau khi nội suy vào điều khiển thu được
29 Đồ thị quỹ đạo đầu ra: Đồ thị so sánh quỹ đạo vào/ra theo thời gian:
Bài tập lớn môn hệ thống điều khiển máy CNC, máy CNC hai trục X, Y, mỗi trục có một động cơ.
30 Đồ thị so sánh vận tốc vào/ra theo thời gian:
31 Đồ thị tín hiệu điều khiển: Đồ thị sai số khi điều khiển:
Bài tập lớn môn hệ thống điều khiển máy CNC, máy CNC hai trục X và Y, mỗi trục có 1 động cơ.
Biểu diễn 3 đường theo yêu cầu bài toán:
THỰC HIỆN VẼ CHỮ “C”
Từ những kết quả thu được ở trên, nhóm em sẽ thực hiện vẽ chữ “C” qua 3 bước:
• B1: Thực hiện nội suy đường tròn từ điểm A(20,20) đến điểm B(-20,20) với đường tròn bán kính R mm và góc nội suy 𝝋 = 𝝅
• B2: Thực hiện nội suy đường thằng từ điểm B(-20,20) đến điểm C(-20,-20) với độ dài di chuyển L@mm
• B3: Thực hiện nội suy đường tròn từ điểm C(-20,-20) đến điểm D(20,-20) với đường tròn bán kính R mm và góc nội suy 𝝋 = 𝝅
Cả 3 bước nội suy trên đều thực hiện với chu kì nội suy 𝝉 = 𝟓𝒎𝒔
Sau khi thực hiện 3 bước nội suy trên, ta thu được kết quả:
Profile vận tốc chia thành 3 quãng lần lượt theo 3 bước ở trên:
Bài tập lớn môn điều khiển máy CNC, máy CNC hai trục X và Y, mỗi trục có một động cơ.
Tiến hành nội suy tinh theo phương pháp tuyến tính và trung bình tương tự như trên ta thu được quỹ đạo cuối cùng:
35 Đưa quỹ đạo sau nội suy vào điều khiển thu được: Đồ thị quỹ đạo đầu ra: Đồ thị so sánh quỹ đạo vào/ra theo thời gian:
Bài tập lớn môn hệ thống điều khiển máy CNC hai trục X và Y, mỗi trục có một động cơ.
36 Đồ thị so sánh vận tốc vào/ra theo thời gian:
37 Đồ thị tín hiệu điều khiển: Đồ thị sai số khi điều khiển:
Bài tập lớn môn điều khiển máy CNC, máy CNC hai trục X và Y, mỗi trục có một động cơ Bài tập này giúp sinh viên hiểu rõ hơn về nguyên lý hoạt động và ứng dụng của máy CNC trong sản xuất Hệ thống điều khiển cho phép điều chỉnh chính xác các thông số, từ đó nâng cao hiệu suất và chất lượng sản phẩm Việc thực hành trên máy CNC sẽ trang bị cho sinh viên kỹ năng cần thiết để vận hành và bảo trì thiết bị trong môi trường công nghiệp.
Biểu diễn 3 đường theo yêu cầu bài toán:
NỘI SUY THÔ QUỸ ĐẠO VỚI TĂNG/GIẢM TỐC SAU NỘI SUY
Nội suy tuyến tính
Các thông số lựa chọn:
• Chiều dài: L= 50 (mm), đi từ A(10,10) đến B(50,40)
• Gia tốc tăng tốc cho phép : A=2 (mm/s 2 )
• Gia tốc giảm tốc cho phép: D=2 (mm/s 2 )
• Chu kỳ nội suy: 𝜏=5 (ms)
• Tốc độ ăn dao: F=5 (mm/s) Tiến hành nội suy thô tuyến tính theo lưu đồ sau:
• 𝑑𝑋 = 𝑥 𝑒 − 𝑥 𝑠 = 40(mm) %tong dich chuyen truc X
• 𝑑𝑌 = 𝑦 𝑒 − 𝑦 𝑠 = 30(mm) %tong dich chuyen truc Y
𝐹 = 10 (s) %tong thoi gian dich chuyen
𝑁 = 0.02(mm) %khoang dich chuyen truc X
𝑁 = 0.015(mm) %khoang dich chuyen truc Y
Bài tập lớn môn điều khiển máy CNC, máy CNC hai trục X và Y, mỗi trục có một động cơ.
Input pulse train: Impulse response:
Output pulse train: Áp dụng phương trình:
Cụ thể với khoảng dịch chuyển trục X và trục Y:
𝑁 𝐴 (∆𝑌(𝑘) − ∆𝑌(𝑘 − 𝑁 𝐴 )) + ∆𝑌 0 (𝑘 − 1) Tính toán một số chu kỳ:
Zoom và biểu diễn dạng bar graph:
Bài tập lớn môn hệ thống điều khiển máy CNC, máy CNC hai trục X và Y, mỗi trục có 1 động cơ Bài tập này giúp sinh viên hiểu rõ hơn về nguyên lý hoạt động và ứng dụng của hệ thống điều khiển trong máy CNC, từ đó nâng cao kỹ năng lập trình và vận hành máy móc.
Quỹ đạo thu được cuối cùng:
Các thông số lựa chọn:
• Gia tốc tăng tốc cho phép : A=2 (mm/s 2 )
• Gia tốc giảm tốc cho phép: D=2 (mm/s 2 )
• Chu kỳ nội suy: =5 (ms)
• Tốc độ ăn dao: F=5 (mm/s)
Từ phần tuyến tính ta có: 𝑃𝑢𝑙𝑠𝑒𝑋 = 𝑑𝑋
∆𝛼 ] = 2144 Tương tự như phần tuyến tính ta thu được:
Input pulse train: Impulse response:
Output pulse train: Áp dụng công thức tương tự như đã làm với phần tuyến tính ta thu được bảng tính toán một số chu kỳ:
Input pulse: ∆𝛼(𝑘) Output of buffer register:
Bài tập lớn môn điều khiển máy CNC hai trục X, Y, mỗi trục có một động cơ.
Zoom và biểu diễn dưới dạng bar graph:
Quỹ đạo thu được cuối cùng:
So sánh với quỹ đạo đặt:
Bài tập lớn môn Hệ thống điều khiển máy CNC, máy CNC hai trục X và Y, mỗi trục có một động cơ Bài tập này giúp sinh viên hiểu rõ hơn về cấu trúc và nguyên lý hoạt động của hệ thống điều khiển máy CNC, từ đó áp dụng vào thực tiễn trong ngành công nghiệp chế tạo.
7.1 Chương trình nội suy đường thẳng (m-file)
F=5; %toc do an dao 50mm/s^2 A=2; %gia toc tang toc cho phep D=2; %gia toc giam toc cho phep LP; %chieu dai
T^-3; %chu ky noi suy Tdk-3; %chu ky dieu khien Nt=T/Tdk;%ty so
%%tinh toan thoi gian tang toc giam toc Ta=F/A;%time acc
Td=F/D;%time dec Tc=(L-Sa-Sd)/F;%time cons Sa=(F*F)/(2*A);
%%Noi suy tho van toc Va0=0;
The equations describe a series of calculations involving various parameters: Va equals Va0 multiplied by T and F, while Vi+1 is computed as Vi plus A multiplied by T For Vd, the formula is Vd0 minus T multiplied by D, and Vi+1 is also defined as Vi minus A multiplied by T The variable Vc is initialized as a vector of ones scaled by F Time arrays are defined with intervals: ta ranging from 0 to Ta in increments of T, td starting at Tc plus Ta to Tc plus Ta plus Td, and tc from Ta to Ta plus Tc Additionally, tas, tcs, and tds are created with specific intervals based on Tdk.
%tinh toan khoang tang toc ns tho deltaL1=Va*T; deltaX1taL1*0.8; deltaY1taL1*0.6; syms i X1=zeros(1,Na+1);
%tinh toan khoang cons ns tho deltaL2=Vc*T; deltaX2taL2*0.8; deltaY2taL2*0.6; syms j X2=zeros(1,Nc+1);
Y2=zeros(1,Nc+1); for j=2:Nc+1 X2(1,1)=X1(1,Na+1);
%tinh toan khoang giam toc ns tho deltaL3=Vd*T; deltaX3taL3*0.8; deltaY3taL3*0.6;
Bài tập lớn môn hệ thống điều khiển máy CNC, máy CNC hai trục X và Y, mỗi trục có một động cơ.
Y3=zeros(1,Nd); for k=2:Nd+1 X3(1,1)=X2(1,Nc+1);
This article discusses the calculation of acceleration using symbolic mathematics in MATLAB It initializes arrays for x and y coordinates, computes average values through nested loops, and applies smoothing techniques to the data The algorithm iteratively calculates the average of surrounding elements to enhance accuracy The final section processes edge cases to ensure consistent results at the boundaries of the dataset The outcome is a refined set of coordinates, ready for further analysis or visualization.
Y11=zeros(1,Na*Nt+1);Y12=zeros(1,Na*Nt+1); for l=2:Na*Nt+1 X11(1,1);X12(1,1);
%tinh toan khoang cons ns tinh syms i j k aX2=zeros(1,Nc*Nt+1);aX2(1,Nc*Nt+1)taX2(1,Nc+1)/Nt; aY2=zeros(1,Nc*Nt+1);aY2(1,Nc*Nt+1)taY2(1,Nc+1)/Nt;
X21=zeros(1,Nc*Nt+1);Y21=zeros(1,Nc*Nt+1); for i=1:Nc for j=(Nt*i-Nt+1):(Nt*i) aX2(1,j)taX2(1,i)/Nt; aY2(1,j)taY2(1,i)/Nt; end end for k=2:Nc*Nt+1 X21(1,1)=X11(1,Na*Nt+1);
%tinh toan khoang giam toc ns tinh
The code initializes arrays for processing data with specific dimensions, where `aX3` and `aY3` are computed based on the number of time steps (`Nt`) and data points (`Nd`) It iteratively fills these arrays using mathematical operations to average values over defined ranges Additional arrays, `bX3`, `bY3`, `b1X3`, and `b1Y3`, are created to store intermediate averages, with specific calculations for the first four elements and subsequent elements based on previous values The final arrays, `X31` and `X32`, are initialized for further use in the data processing workflow.
Y31=zeros(1,Nd*Nt+1);Y32=zeros(1,Nd*Nt+1); for l=2:Nd*Nt+1 X31(1,1)=X21(1,Nc*Nt+1);X32(1,1)=X21(1,Nc*Nt+1);
Y11s=Y11(:, 1:2500);Y21s=Y21(:, 1:7500);Y31s=Y31(:, 1:2500); wave.time = [];%iput simulink sum=[X11s,X21s,X31s,X41;Y11s,Y21s,Y31s,Y41]'; wave.signals.values = sum; wave.signals.dimensions =2; xsml=out.x_sml; ysml=out.y_sml; if(wave.time>12503) wave.signals.value=X32(2501,1); end
Chương trình nội suy đường tròn (m-file)
%% clear sum F=5; %toc do an dao 50mm/s^2 A=2; %gia toc tang toc cho phep D=2; %gia toc giam toc cho phep LP; %chieu dai
T^-3; %chu ky noi suy Tdk-3;
Bài tập lớn môn điều khiển máy CNC, máy CNC hai trục X, Y, mỗi trục có 1 động cơ Bài tập này giúp sinh viên nắm vững kiến thức về điều khiển và lập trình máy CNC, từ đó ứng dụng vào thực tiễn trong ngành công nghiệp chế tạo Việc hiểu rõ cấu trúc và chức năng của từng bộ phận trong máy CNC là rất quan trọng để tối ưu hóa quy trình sản xuất.
%%tinh toan thoi gian tang toc giam toc Ta=F/A;%time acc
Tc=(L-Sa-Sd)/F;%time cons
The equations describe a system with varying parameters over time, where Va is adjusted based on initial values and factors such as temperature and force The volume at the next time step, Vi+1, is determined by adding or subtracting a product of acceleration and time from the current volume, Vi The variable Vc represents a constant value influenced by the force, while the time arrays ta, td, and tc are defined for different phases of the process The time intervals tas and tds further segment the overall timeline, allowing for detailed analysis of the system's behavior across specified durations.
%noi suy duong tron X_tam0/10;
Wa=Va/R;%w=v/r toc do tang toc alpha=Wa*T;%noi suy goc alpha khi tang toc tong=sum(alpha);%tong quang duong tang toc
Wd=Vd/R;%toc do giam toc alpha2=Wd*T;%noi suy goc alpha khi giam toc tong2=sum(alpha2);%tong quang duong giam toc
Wc=F/R;%toc do cons tong1os(7/25)-tong-tong2;%quang duong cons Tc_dtr=tong1/Wc;%Thoi gian cons
The variable Nc_dtr is calculated by rounding the division of Tc_dtr by T The variable Vc_dtr is initialized as an array filled with ones, with a length of Nc_dtr plus one, multiplied by F The time constant tc_dtr is generated as a sequence starting from Ta to Ta plus Tc_dtr, incremented by T Additionally, the variable tcs is created as a sequence from Ta to Ta plus Tc_dtr, incremented by Tdk.
Wc_dtr=Vc_dtr/R;%w=v/r alpha1=Wc_dtr*T;% noi suy goc alpha cons td_dtr=Tc_dtr+Ta:T:(Tc_dtr+Ta+Td);
The article discusses the implementation of a mathematical algorithm using symbolic variables in a programming context It initializes an array, `a_alpha`, to compute average values based on a given parameter `alpha`, distributing its values across a specified range A loop iterates through the indices to populate `a_alpha` with normalized values Additionally, the article introduces the calculation of moving averages through the creation of arrays `b_alpha`, `b1_alpha`, and `b2_alpha`, which utilize preceding elements of `a_alpha` to derive smoothed averages This process enhances data analysis by providing a clearer representation of trends within the dataset.
The code snippet calculates values for three arrays, `b_alpha`, `b1_alpha`, and `b2_alpha`, using a loop that iterates from `Na*Nt-2` to `Na*Nt+1` The value of `b_alpha` is computed as a weighted average of two elements from the `a_alpha` array, while `b1_alpha` follows a similar calculation with adjusted coefficients Finally, `b2_alpha` is determined as the average of `b_alpha` and `b1_alpha`, ensuring a balanced representation of the computed values.
The code initializes an array `a_alpha1` with zeros, sized to accommodate the product of `Nc_dtr` and `Nt`, plus one It then assigns the value of `alpha1` divided by `Nt` to the first element of `a_alpha1` In a nested loop, the code iterates through `Nc_dtr`, updating segments of the `a_alpha1` array by distributing the value of `alpha1` across specific indices determined by the current iteration, effectively normalizing the values based on `Nt`.
The article discusses the computation of average values using symbolic variables in a MATLAB-like environment It initializes an array, `a_alpha2`, to store values derived from `alpha2` divided by `Nt` A loop iterates over the dimensions, updating `a_alpha2` based on specific index ranges Additionally, three new arrays, `b_alpha2`, `b1_alpha2`, and `b2_alpha2`, are created to calculate average values based on different formulas For the first four indices, averages are computed using weighted contributions from `a_alpha2`, while for subsequent indices, the averages consider the values of several preceding elements This structured approach ensures a comprehensive calculation of averages across the defined dimensions.
%tinh toan dich chuyen ns tho
%acc A_dtr=cos(alpha);%A=cos B_dtr=sin(alpha);%B=sin X4=zeros(1,Na+1);
Y4=zeros(1,Na+1); syms z for z=2:Na+1 X4(1,1);%Hoanh do diem A Y4(1,1);%Tung do diem A X4(1,z)=A_dtr(1,z-1)*((X4(1,z-1))-X4(1,1))+B_dtr(1,z-1)*(Y_tam-Y4(1,z-1))+X4(1,1); Y4(1,z)=Y_tam-A_dtr(1,z-1)*(Y_tam-Y4(1,z-1))+B_dtr(1,z-1)*(X4(1,z-1)-X4(1,1)); end
Y5=zeros(1,Nc_dtr+1); syms v for v=2:Nc_dtr+1 X5(1,1)=X4(1,Na+1);
X5(1,v)=A_dtr1(1,v-1)*(X5(1,v-1)-X4(1,1))+B_dtr1(1,v-1)*(Y_tam-Y5(1,v-1))+X4(1,1); Y5(1,v)=Y_tam-A_dtr1(1,v-1)*(Y_tam-Y5(1,v-1))+B_dtr1(1,v-1)*(X5(1,v-1)-X4(1,1)); end
Bài tập lớn môn hệ thống điều khiển máy CNC, máy CNC hai trục X và Y, mỗi trục có một động cơ.
Y6_dtr=zeros(1,Nd+1); syms m for m=2:Nd+1 X6(1,1)=X5(1,Nc_dtr+1);
X6(1,m)=A_dtr2(1,m-1)*(X6(1,m-1)-X4(1,1))+B_dtr2(1,m-1)*(Y_tam-Y6(1,m-1))+X4(1,1); Y6(1,m)=Y_tam-A_dtr2(1,m-1)*(Y_tam-Y6(1,m-1))+B_dtr2(1,m-1)*(X6(1,m-1)-X4(1,1)); end
%tinh toan dich chuyen ns tinh tuyen tinh
%acc A1_dtr=cos(a_alpha);%A=cos B1_dtr=sin(a_alpha);%B=sin X41=zeros(1,Na*Nt+1);
Y41=zeros(1,Na*Nt+1); syms z for z=2:Na*Nt+1 X41(1,1);%Hoanh do diem A Y41(1,1);%Tung do diem A X41(1,z)_dtr(1,z-1)*((X41(1,z-1))-X41(1,1))+B1_dtr(1,z-1)*(Y_tam-Y41(1,z- 1))+X41(1,1);
Y41(1,z)=Y_tam-A1_dtr(1,z-1)*(Y_tam-Y41(1,z-1))+B1_dtr(1,z-1)*(X41(1,z-1)- X41(1,1)); end
Y51=zeros(1,Nc_dtr*Nt+1); syms v for v=2:Nc_dtr*Nt+1 X51(1,1)=X41(1,Na*Nt+1);
Y51(1,v)=Y_tam-A1_dtr1(1,v-1)*(Y_tam-Y51(1,v-1))+B1_dtr1(1,v-1)*(X51(1,v-1)- X41(1,1)); end
Y61=zeros(1,Nd*Nt+1); syms m for m=2:Nd*Nt+1 X61(1,1)=X51(1,Nc_dtr*Nt+1);
Y61(1,m)=Y_tam-A1_dtr2(1,m-1)*(Y_tam-Y61(1,m-1))+B1_dtr2(1,m-1)*(X61(1,m-1)- X41(1,1)); end
%tinh toan dich chuyen ns tinh trung binh
%acc A2_dtr=cos(b2_alpha);%A=cos B2_dtr=sin(b2_alpha);%B=sin X42=zeros(1,Na*Nt+1);
Y42=zeros(1,Na*Nt+1); syms z for z=2:Na*Nt+1 X42(1,1);%Hoanh do diem A
Y42(1,1);%Tung do diem A X42(1,z)_dtr(1,z-1)*((X42(1,z-1))-X42(1,1))+B2_dtr(1,z-1)*(Y_tam-Y42(1,z- 1))+X42(1,1);
Y42(1,z)=Y_tam-A2_dtr(1,z-1)*(Y_tam-Y42(1,z-1))+B2_dtr(1,z-1)*(X42(1,z-1)- X42(1,1)); end
Y52=zeros(1,Nc_dtr*Nt+1); syms v for v=2:Nc_dtr*Nt+1 X52(1,1)=X42(1,Na*Nt+1);
Y52(1,v)=Y_tam-A2_dtr1(1,v-1)*(Y_tam-Y52(1,v-1))+B2_dtr1(1,v-1)*(X52(1,v-1)- X42(1,1)); end
Y62=zeros(1,Nd*Nt+1); syms m for m=2:Nd*Nt+1 X62(1,1)=X52(1,Nc_dtr*Nt+1);
Y62(1,m)=Y_tam-A2_dtr2(1,m-1)*(Y_tam-Y62(1,m-1))+B2_dtr2(1,m-1)*(X62(1,m-1)- X42(1,1)); end
Y72s=Y72(:, 1:2500);Y82s=Y82(:, 1:10060);Y92s=Y92(:, 1:2501); wave1.time = [];%iput simulink sum=[X42s,X52s,X62s,X12s,X21s,X32s,X72s,X82s,X92s;Y42s,Y52s,Y62s,Y12s,Y21s,Y32s,Y72s,Y 82s,Y92s]'; wave1.signals.values = sum; wave1.signals.dimensions =2; xsml=x_sml; ysml=y_sml;
Chương trình nội suy chữ C (m-file)
clear sum F=5; %toc do an dao 50mm/s^2 A=2; %gia toc tang toc cho phep D=2; %gia toc giam toc cho phep L@; %chieu dai
T^-3; %chu ky noi suy Tdk-3;
%%tinh toan thoi gian tang toc giam toc Ta=F/A;%time acc
Tc=(L-Sa-Sd)/F;%time cons
Bài tập lớn môn hệ thống điều khiển máy CNC, máy CNC hai trục X-Y, mỗi trục có một động cơ.
Va=Va0:T*A:F;%Vi+1=Vi+A*T Vd=Vd0:-T*D:0;%Vi+1=Vi-A*T Vc=ones(1,Nc+1)*F; ta=0:T:Ta; td=Tc+Ta:T:(Tc+Ta+Td); tc=Ta:T:(Ta+Tc);
%noi suy duong tron X_tam=0;
Wa=Va/R;%w=v/r toc do tang toc alpha=Wa*T;%noi suy goc alpha khi tang toc tong=sum(alpha);%tong quang duong tang toc
Wd=Vd/R;%toc do giam toc alpha2=Wd*T;%noi suy goc alpha khi giam toc tong2=sum(alpha2);%tong quang duong giam toc
The formula for calculating the speed (Wc) is derived from the force (F) divided by resistance (R) The angle difference (tong1) is determined by subtracting the sum of angles (tong) and (tong2) from pi The distance (Tc_dtr) is computed using the angle difference divided by the speed The time (Nc_dtr) is rounded by dividing the distance by the time interval (T) The interpolation count (Vc_dtr) is represented as an array of ones, with a length of Nc_dtr plus one, multiplied by the force Finally, the time intervals (tc_dtr) are generated from the starting time (Ta) to the calculated distance, incremented by the time interval (T).
Wc_dtr=Vc_dtr/R;%w=v/r alpha1=Wc_dtr*T;% noi suy goc alpha cons
A_dtr=cos(alpha);%A=cos B_dtr=sin(alpha);%B=sin X4=zeros(1,Na+1);
Y4=zeros(1,Na+1); syms z for z=2:Na+1 X4(1,1) ;%Hoanh do diem A Y4(1,1) ;%Tung do diem A X4(1,z)=X4(1,z-1)*A_dtr(1,z-1)-(Y4(1,z-1)-Y_tam)*B_dtr(1,z-1);
Y4(1,z)=(Y4(1,z-1)-Y_tam)*A_dtr(1,z-1)+X4(1,z-1)*B_dtr(1,z-1)+Y_tam; end
Y5=zeros(1,Nc_dtr+1); syms v for v=2:Nc_dtr+1 X5(1,1)=X4(1,Na+1)*A_dtr1(1,v-1)-(Y4(1,Na+1)-Y_tam)*B_dtr1(1,v-1); Y5(1,1)=(Y4(1,Na+1)-Y_tam)*A_dtr1(1,v-1)+X4(1,Na+1)*B_dtr1(1,v-1)+Y_tam; X5(1,v)=X5(1,v-1)*A_dtr1(1,v-1)-(Y5(1,v-1)-Y_tam)*B_dtr1(1,v-1);
Y5(1,v)=(Y5(1,v-1)-Y_tam)*A_dtr1(1,v-1)+X5(1,v-1)*B_dtr1(1,v-1)+Y_tam; end
Y6_dtr=zeros(1,Nd+1); syms m for m=2:Nd+1
X6(1,m)=X6(1,m-1)*A_dtr2(1,m-1)-(Y6(1,m-1)-Y_tam)*B_dtr2(1,m-1); Y6(1,m)=(Y6(1,m-1)-Y_tam)*A_dtr2(1,m-1)+X6(1,m-1)*B_dtr2(1,m-1)+Y_tam; end
%%tinh toan thoi gian tang toc giam toc Ta=F/A;%time acc
Tc=(L-Sa-Sd)/F;%time cons
Va=Va0:T*A:F;%Vi+1=Vi+A*T Vd=Vd0:-T*D:0;%Vi+1=Vi-A*T Vc=ones(1,Nc+1)*F; ta=0:T:Ta; td=Tc+Ta:T:(Tc+Ta+Td); tc=Ta:T:(Ta+Tc);
%tinh toan khoang tang toc deltaL1=Va*T; deltaX1taL1*0; deltaY1taL1*1; syms i X1=zeros(1,Na+1);
Y1=zeros(1,Na+1); for i=2:Na+1 X1(1,1)=X6(1,Nd+1);
%tinh toan khoang cons deltaL2=Vc*T; deltaX2taL2*0; deltaY2taL2*1; syms j X2=zeros(1,Nc+1);
Y2=zeros(1,Nc+1); for j=2:Nc+1 X2(1,1)=X1(1,Na+1);
%tinh toan khoang giam toc deltaL3=Vd*T; deltaX3taL3*0; deltaY3taL3*1; syms k X3=zeros(1,Nd);
Y3=zeros(1,Nd); for k=2:Nd+1 X3(1,1)=X2(1,Nc+1);
Bài tập lớn môn điều khiển máy CNC, máy CNC hai trục X và Y, mỗi trục có 1 động cơ Bài tập này giúp sinh viên hiểu rõ về nguyên lý hoạt động và ứng dụng của máy CNC trong sản xuất Việc nắm vững cách điều khiển máy CNC sẽ nâng cao kỹ năng thực hành và khả năng sáng tạo trong thiết kế.
Wa=Va/R;%w=v/r toc do tang toc alpha=Wa*T;%noi suy goc alpha khi tang toc tong=sum(alpha);%tong quang duong tang toc
Wd=Vd/R;%toc do giam toc alpha2=Wd*T;%noi suy goc alpha khi giam toc tong2=sum(alpha2);%tong quang duong giam toc
The formula for calculating speed is Wc = F/R, where F represents force and R is resistance The total angle, denoted as tong1, is calculated as pi minus the sum of angles tong and tong2 The distance covered, Tc_dtr, is derived from the equation Tc_dtr = tong1/Wc The time taken, Nc_dtr, is determined by rounding the result of Tc_dtr divided by T The interpolation value for speed, Vc_dtr, is initialized as a constant array filled with the force value F The time intervals are defined as tc_dtr ranging from Ta to Ta + Tc_dtr The derived speed, Wc_dtr, is calculated using the formula Wc_dtr = Vc_dtr/R The angular interpolation, alpha1, is obtained by multiplying Wc_dtr by T, while the time intervals for the derived angle, td_dtr, span from Tc_dtr + Ta to Tc_dtr + Ta + Td.
A_dtr=cos(alpha);%A=cos B_dtr=sin(alpha);%B=sin X7=zeros(1,Na+1);
Y7=zeros(1,Na+1); syms q for q=2:Na+1 X7(1,1)=X3(1,Nd+1);%Hoanh do diem A Y7(1,1)=Y3(1,Nd+1);%Tung do diem A X7(1,q)=X7(1,q-1)*A_dtr(1,q-1)-(Y7(1,q-1)-Y_tam1)*B_dtr(1,q-1);
Y7(1,q)=(Y7(1,q-1)-Y_tam1)*A_dtr(1,q-1)+X7(1,q-1)*B_dtr(1,q-1)+Y_tam1; end A_dtr1=cos(alpha1);
Y8=zeros(1,Nc_dtr+1); syms p for p=2:Nc_dtr+1 X8(1,1)=X7(1,Na+1);
Y8(1,p)=(Y8(1,p-1)-Y_tam1)*A_dtr1(1,p-1)+X8(1,p-1)*B_dtr1(1,p-1)+Y_tam1; end A_dtr2=cos(alpha2);
Y9=zeros(1,Nd+1); for l=2:Nd+1 X9(1,1)=X8(1,Nc_dtr+1)*A_dtr2(1,l-1)-(Y8(1,Nc_dtr+1)-Y_tam1)*B_dtr2(1,l-1);
Y9(1,1)=(Y8(1,Nc_dtr+1)-Y_tam1)*A_dtr2(1,l-1)+X8(1,Nc_dtr+1)*B_dtr2(1,l-1)+Y_tam1; X9(1,l)=X9(1,l-1)*A_dtr2(1,l-1)-(Y9(1,l-1)-Y_tam1)*B_dtr2(1,l-1);
Y9(1,l)=(Y9(1,l-1)-Y_tam1)*A_dtr2(1,l-1)+X9(1,l-1)*B_dtr2(1,l-1)+Y_tam1; end
%noi suy tinh duong thang
The calculation of acceleration in a linear system involves initializing arrays for both X and Y coordinates Specifically, the arrays aX1 and aY1 are created with zeros, sized to accommodate the total number of elements calculated from the product of Na and Nt Each element in these arrays is then computed by distributing the corresponding values from aX1 and aY1 across the range defined by the loop indices This process iterates through each set of parameters, ensuring that the values are accurately normalized by the total number of time steps, Nt, resulting in a refined representation of the acceleration data.
The code initializes several arrays, including bX1, bY1, b1X1, b1Y1, b2X1, and b2Y1, to store computed values based on input arrays aX1 and aY1 A loop iterates from k=2 to Na*Nt-3, calculating moving averages for bX1 and bY1 using neighboring elements of aX1 and aY1, respectively Another loop processes the final elements from k=Na*Nt-2 to Na*Nt+1, applying a weighted average to the last few elements of aX1 and aY1 Additionally, two new arrays, X11 and X12, are initialized to hold values for further computations.
Y11=zeros(1,Na*Nt+1);Y12=zeros(1,Na*Nt+1); for l=2:Na*Nt+1 e=0.0319;
%tinh toan khoang cons ns tinh syms i j k aX2=zeros(1,Nc*Nt+1);aX2(1,Nc*Nt+1)taX2(1,Nc+1)/Nt; aY2=zeros(1,Nc*Nt+1);aY2(1,Nc*Nt+1)taY2(1,Nc+1)/Nt;
X21=zeros(1,Nc*Nt+1);Y21=zeros(1,Nc*Nt+1); for i=1:Nc for j=(Nt*i-Nt+1):(Nt*i) aX2(1,j)taX2(1,i)/Nt; aY2(1,j)taY2(1,i)/Nt; end end for k=2:Nc*Nt+1 X21(1,1)=X11(1,Na*Nt+1);
The article discusses the calculation of average values for two sequences, aX3 and aY3, using MATLAB It initializes arrays for these sequences with zeros and computes their values by iterating through specified indices The average values are derived by weighing the elements of aX3 and aY3 based on their respective indices and the total number of elements, Nt Additionally, it introduces variables bX3, b1X3, and b2X3 to store the computed averages for further analysis The calculations involve a combination of the elements from the original sequences, ensuring a systematic approach to deriving the averages.
Bài tập lớn môn hệ thống điều khiển máy CNC, máy CNC hai trục X và Y, mỗi trục có một động cơ.
The calculations for the variables bY3, b1Y3, and b2Y3 are performed using a weighted average formula that incorporates previous values from the array aY3, normalized by Nt Similarly, the variables bX3, b1X3, and b2X3 are computed through the average of the current and prior values from the array aX3, also divided by Nt These computations are iteratively executed for a range of indices, ensuring that the newly defined variables reflect the necessary averages for further processing Additionally, two arrays, X31 and X32, are initialized to store results, each sized to accommodate the total number of iterations defined by Nd and Nt.
Y31=zeros(1,Nd*Nt+1);Y32=zeros(1,Nd*Nt+1); for l=2:Nd*Nt+1 X31(1,1)=X21(1,Nc*Nt+1);X32(1,1)=X21(1,Nc*Nt+1);
%noi suy tinh duong tron
The article discusses the implementation of symbolic mathematics in MATLAB to compute average values for a given set of data It initializes an array, `a_alpha`, to store normalized values derived from the variable `alpha`, distributing these values across specified indices The code then calculates three different average arrays: `b_alpha`, `b1_alpha`, and `b2_alpha`, using a loop to aggregate values from `a_alpha` over a defined range The averages are computed using a sliding window approach, ensuring that each average reflects the contributions of adjacent elements Finally, the article addresses edge cases by calculating averages for the last few indices differently, maintaining the integrity of the data throughout the process.
The algorithm initializes an array, a_alpha1, to store values based on the input alpha1, distributing these values evenly across a specified number of iterations The process involves iterating through a range defined by Nc_dtr and assigning the average value of alpha1 to segments of the a_alpha1 array, ensuring that each segment corresponds to its respective iteration This method effectively normalizes the values across the defined range, facilitating further calculations.
%noi suy tinh dec syms i j%ns tuyen tinh a_alpha2=zeros(1,Nd*Nt+1);a_alpha2(1,Nd*Nt+1)=alpha2(1,Nd+1)/Nt; for i=1:Nd for j=(Nt*i-Nt+1):(Nt*i) a_alpha2(1,j)=alpha2(1,i)/Nt; end end
The code initializes three arrays, `b_alpha2`, `b1_alpha2`, and `b2_alpha2`, each sized to accommodate the total number of elements defined by `Nd*Nt + 1` For the first four indices, it calculates values for `b_alpha2`, `b1_alpha2`, and `b2_alpha2` using weighted averages of the elements in the `a_alpha2` array For indices from 5 to `Nd*Nt`, it computes the values of `b_alpha2` and `b1_alpha2` based on the average of five surrounding elements from `a_alpha2`, and subsequently calculates `b2_alpha2` as the average of `b_alpha2` and `b1_alpha2` This approach ensures a smooth transition of values across the arrays while maintaining a coherent structure.
%tinh toan dich chuyen ns tinh tuyen tinh
%acc A1_dtr=cos(a_alpha);%A=cos B1_dtr=sin(a_alpha);%B=sin X41=zeros(1,Na*Nt+1);X71=zeros(1,Na*Nt+1);
Y41=zeros(1,Na*Nt+1);Y71=zeros(1,Na*Nt+1); syms z for z=2:Na*Nt+1 X41(1,1) ;X71(1,1)=-20;%Hoanh do diem A Y41(1,1) ;Y71(1,1)=-20+e;%Tung do diem A X41(1,z)=X41(1,z-1)*A1_dtr(1,z-1)-(Y41(1,z-1)-Y_tam)*B1_dtr(1,z-1);
Y41(1,z)=(Y41(1,z-1)-Y_tam)*A1_dtr(1,z-1)+X41(1,z-1)*B1_dtr(1,z-1)+Y_tam; X71(1,z)=X71(1,z-1)*A1_dtr(1,z-1)-(Y71(1,z-1)-Y_tam1)*B1_dtr(1,z-1);
Y71(1,z)=(Y71(1,z-1)-Y_tam1)*A1_dtr(1,z-1)+X71(1,z-1)*B1_dtr(1,z-1)+Y_tam1; end
X51=zeros(1,Nc_dtr*Nt+1);X81=zeros(1,Nc_dtr*Nt+1);
Y51=zeros(1,Nc_dtr*Nt+1);Y81=zeros(1,Nc_dtr*Nt+1); syms v for v=2:Nc_dtr*Nt+1 X51(1,1)=X41(1,Na*Nt+1);X81(1,1)=X71(1,Na*Nt+1);
Y51(1,v)=(Y51(1,v-1)-Y_tam)*A1_dtr1(1,v-1)+X51(1,v-1)*B1_dtr1(1,v-1)+Y_tam; X81(1,v)=X81(1,v-1)*A1_dtr1(1,v-1)-(Y81(1,v-1)-Y_tam1)*B1_dtr1(1,v-1);
Y81(1,v)=(Y81(1,v-1)-Y_tam1)*A1_dtr1(1,v-1)+X81(1,v-1)*B1_dtr1(1,v-1)+Y_tam1; end
X61=zeros(1,Nd*Nt+1);X91=zeros(1,Nd*Nt+1);
Y61=zeros(1,Nd*Nt+1);Y91=zeros(1,Nd*Nt+1); syms m for m=2:Nd*Nt+1 X61(1,1)=X51(1,Nc_dtr*Nt+1);X91(1,1)=X81(1,Nc_dtr*Nt+1);
Y61(1,1)=Y51(1,Nc_dtr*Nt+1);Y91(1,1)=Y81(1,Nc_dtr*Nt+1);
Y61(1,m)=(Y61(1,m-1)-Y_tam)*A1_dtr2(1,m-1)+X61(1,m-1)*B1_dtr2(1,m-1)+Y_tam; X91(1,m)=X91(1,m-1)*A1_dtr2(1,m-1)-(Y91(1,m-1)-Y_tam1)*B1_dtr2(1,m-1);
Y91(1,m)=(Y91(1,m-1)-Y_tam1)*A1_dtr2(1,m-1)+X91(1,m-1)*B1_dtr2(1,m-1)+Y_tam1; end
%tinh toan dich chuyen ns tinh trung binh
%acc A2_dtr=cos(b2_alpha);%A=cos B2_dtr=sin(b2_alpha);%B=sin X42=zeros(1,Na*Nt+1);X72=zeros(1,Na*Nt+1);
Y42=zeros(1,Na*Nt+1);Y72=zeros(1,Na*Nt+1);
Bài tập lớn môn hệ thống điều khiển máy CNC, máy CNC hai trục X và Y, mỗi trục có một động cơ.
60 syms z for z=2:Na*Nt+1 X42(1,1) ;X72(1,1)=-20;%Hoanh do diem A Y42(1,1) ;Y72(1,1)=-20+e;%Tung do diem A X42(1,z)=X42(1,z-1)*A2_dtr(1,z-1)-(Y42(1,z-1)-Y_tam)*B2_dtr(1,z-1);
Y72(1,z)=(Y72(1,z-1)-Y_tam1)*A2_dtr(1,z-1)+X72(1,z-1)*B2_dtr(1,z-1)+Y_tam1; end
X52=zeros(1,Nc_dtr*Nt+1);X82=zeros(1,Nc_dtr*Nt+1);
Y52=zeros(1,Nc_dtr*Nt+1);Y82=zeros(1,Nc_dtr*Nt+1); syms v for v=2:Nc_dtr*Nt+1 X52(1,1)=X42(1,Na*Nt+1);X82(1,1)=X72(1,Na*Nt+1);
Y52(1,v)=(Y52(1,v-1)-Y_tam)*A2_dtr1(1,v-1)+X52(1,v-1)*B2_dtr1(1,v-1)+Y_tam; X82(1,v)=X82(1,v-1)*A2_dtr1(1,v-1)-(Y82(1,v-1)-Y_tam1)*B2_dtr1(1,v-1);
Y82(1,v)=(Y82(1,v-1)-Y_tam1)*A2_dtr1(1,v-1)+X82(1,v-1)*B2_dtr1(1,v-1)+Y_tam1; end
X62=zeros(1,Nd*Nt+1);X92=zeros(1,Nd*Nt+1);
Y62=zeros(1,Nd*Nt+1);Y92=zeros(1,Nd*Nt+1); syms m for m=2:Nd*Nt+1 X62(1,1)=X52(1,Nc_dtr*Nt+1);X92(1,1)=X82(1,Nc_dtr*Nt+1);
Y62(1,1)=Y52(1,Nc_dtr*Nt+1);Y92(1,1)=Y82(1,Nc_dtr*Nt+1);
Y62(1,m)=(Y62(1,m-1)-Y_tam)*A2_dtr2(1,m-1)+X62(1,m-1)*B2_dtr2(1,m-1)+Y_tam; X92(1,m)=X92(1,m-1)*A2_dtr2(1,m-1)-(Y92(1,m-1)-Y_tam1)*B2_dtr2(1,m-1);
Y92(1,m)=(Y92(1,m-1)-Y_tam1)*A2_dtr2(1,m-1)+X92(1,m-1)*B2_dtr2(1,m-1)+Y_tam1; end
Y10s(1,t)=Y9s(1,Nd*Nt+1); end wave1.time = [];%iput simulink sum=[X4s,X5s,X6s,X1s,X2s,X3s,X7s,X8s,X9s,X10s;Y4s,Y5s,Y6s,Y1s,Y2s,Y3s,Y7s,Y8s,Y9s,Y10s ]'; wave1.signals.values = sum; wave1.signals.dimensions =2; xsml=x_sml; ysml=y_sml;
Nội suy thô đường thẳng với kiểu tăng/giảm tốc sau nội suy dạng hình thang
%%thong so F=5; %toc do an dao 50mm/s^2 A=2; %gia toc tang toc cho phep D=2; %gia toc giam toc cho phep LP; %chieu dai
%%tinh toan thoi gian tang toc giam toc
Ta=F/A;%time acc Na=Ta/T;%Pulse acc Tsum=L/F;%total time
%%tinh toan khoang dich chuyen dX=L*0.8; dY=L*0.6;
N=Tsum/T;%Pulse sum syms i deltaX=zeros(1,N+1);%khoang dich chuyen truc X deltaY=zeros(1,N+1);%khoang dich chuyen truc Y for i=1:N deltaX(i)=dX/N; deltaY(i)=dY/N; end
YLO=zeros(1,N+Na); for i=2:Na%acc XLO(1)taX(1)/Na;YLO(1)taY(1)/Na;
YLO(i)taY(i)/Na+YLO(i-1); end for i=Na+1:N%cons XLO(i)=(deltaX(i)-deltaX(i-Na))/Na+XLO(i-1);
YLO(i)=(deltaY(i)-deltaY(i-Na))/Na+YLO(i-1); end for i=N+1:N+Na%dec XLO(i)=-deltaX(i-Na)/Na+XLO(i-1);
YLO(i)=-deltaY(i-Na)/Na+YLO(i-1); end X=zeros(1,N+Na);
Nội suy thô đường tròn với kiểu tăng/giảm tốc sau nội suy dạng hình thang
%%thong so F=5; %toc do an dao 50mm/s^2 A=2; %gia toc tang toc cho phep D=2; %gia toc giam toc cho phep alpha=1.287;%tong cung dich chuyen T^-3; %chu ky noi suy
X_tam0/10;%tam duong tron truc X Y_tam=(310/6);%tam duong tron truc Y R50/30;%ban kinh
%%tinh toan thoi gian tang toc giam toc Ta=F/A;%time acc
Na=Ta/T;%Pulse acc Tsum.72;%total time
%%tinh toan khoang dich chuyen N=Tsum/T;%Pulse sum syms i d_alpha=zeros(1,N+1);%khoang dich chuyen goc alpha for i=1:N d_alpha(i)=alpha/N; end
%%output alphaLO=zeros(1,N+Na); for i=2:Na%acc alphaLO(1)=d_alpha(1)/Na; alphaLO(i)=d_alpha(i)/Na+alphaLO(i-1);