Chào các bạn,
Mình có một bài toán mà chưa tìm ra được lời giải tối ưu. Bài toán của mình như sau:
Mình dùng 1 PLC (FX2N) + 1 bộ DA + 1 driver servo (Sanyodenki) để điều khiển 1 động cơ servo kéo 1 cơ cấu chạy qua chạy lại. Trong động cơ servo có built-in 1 encoder 2048 ppm. Động cơ này sẽ chạy theo 1 giá trị tham chiếu ( đặt trước khi khởi động). Động cơ sẽ chạy qua lại, động cơ dừng và đảo chiều ở 2 đầu (đoạn đường 12m), ban đầu khi khởi động động cơ tăng tốc, yêu cầu là sau khi chạy được 1 quãng đường x = 0.7m thì động cơ phải đạt được tốc độ định mức, sau đó chạy đều trong quãng đường 10.6m, còn 0.7 mét cuối cùng động cơ giảm tốc và đảo chiều (chu kỳ lặp lại)
Vướng mắc của mình là tốc độ tham chiếu thay đổi ( do người vận hành cài đặt ban đầu) và động cơ phải luôn đạt tốc độ sau 0.7m tính từ vị trí ban đầu.
Hướng giải quyết của mình: Mình chia nhỏ đoạn đường đó ra làm nhiều phần, dùng lệnh so sánh tốc độ cao để so sánh xung encoder hồi tiếp về ( xác định khoảng cách của động cơ servo), trong mỗi phần mình xuất ra 1 giá trị tham chiếu, đến phần cuối cùng thì Vref = Vmax. Tuy nhiên việc chia nhỏ chỉ có giơi hạn: 1. nếu chia nhỏ ( khoảng 4 lần) thì động cơ bị giật (mỗi khi tăng tốc - nhảy cấp), 2. nếu chia thành nhiều khoảng ( cỡ 10 khoảng) thì chương trình có vấn đề nếu chạy ở tốc độ cao (đáp ứng không kịp, mất xung)
Mình post lên mong mọi người chia sẻ thuật toán xử lý
Tks
Mình có một bài toán mà chưa tìm ra được lời giải tối ưu. Bài toán của mình như sau:
Mình dùng 1 PLC (FX2N) + 1 bộ DA + 1 driver servo (Sanyodenki) để điều khiển 1 động cơ servo kéo 1 cơ cấu chạy qua chạy lại. Trong động cơ servo có built-in 1 encoder 2048 ppm. Động cơ này sẽ chạy theo 1 giá trị tham chiếu ( đặt trước khi khởi động). Động cơ sẽ chạy qua lại, động cơ dừng và đảo chiều ở 2 đầu (đoạn đường 12m), ban đầu khi khởi động động cơ tăng tốc, yêu cầu là sau khi chạy được 1 quãng đường x = 0.7m thì động cơ phải đạt được tốc độ định mức, sau đó chạy đều trong quãng đường 10.6m, còn 0.7 mét cuối cùng động cơ giảm tốc và đảo chiều (chu kỳ lặp lại)
Vướng mắc của mình là tốc độ tham chiếu thay đổi ( do người vận hành cài đặt ban đầu) và động cơ phải luôn đạt tốc độ sau 0.7m tính từ vị trí ban đầu.
Hướng giải quyết của mình: Mình chia nhỏ đoạn đường đó ra làm nhiều phần, dùng lệnh so sánh tốc độ cao để so sánh xung encoder hồi tiếp về ( xác định khoảng cách của động cơ servo), trong mỗi phần mình xuất ra 1 giá trị tham chiếu, đến phần cuối cùng thì Vref = Vmax. Tuy nhiên việc chia nhỏ chỉ có giơi hạn: 1. nếu chia nhỏ ( khoảng 4 lần) thì động cơ bị giật (mỗi khi tăng tốc - nhảy cấp), 2. nếu chia thành nhiều khoảng ( cỡ 10 khoảng) thì chương trình có vấn đề nếu chạy ở tốc độ cao (đáp ứng không kịp, mất xung)
Mình post lên mong mọi người chia sẻ thuật toán xử lý
Tks

Comment