Lệnh A_VELMOVE Di Chuyển Chế Độ Tốc Độ Qua Ethercat

Trong nhiều ứng dụng tự động hóa, việc điều khiển trục servo di chuyển liên tục với một vận tốc ổn định là rất cần thiết, ví dụ như trong các băng tải, hệ thống cấp liệu, hoặc máy cắt liên tục. Lệnh A_VELMOVE là công cụ chuyên dụng để thực hiện chính xác nhiệm vụ này, cho phép trục duy trì một tốc độ nhất định cho đến khi nhận được lệnh dừng. Bài viết này sẽ đi sâu vào cú pháp, các tham số quan trọng, ví dụ thực tế và tầm quan trọng của lệnh A_VELMOVE trong môi trường EtherCAT.

Lệnh A_VELMOVE là gì? Lệnh chạy tốc độ liên tục cho Servo Driver

A_VELMOVE (Axis Velocity Move) là một lệnh mạnh mẽ trong lập trình PLC, được sử dụng để điều khiển một trục servo di chuyển liên tục (không giới hạn quãng đường) theo một tốc độ xác định đã được thiết lập. Lệnh này khác với các lệnh di chuyển vị trí (như A_MOVER hay A_MOVPA) ở chỗ nó không có một điểm đích cụ thể; trục sẽ tiếp tục chạy ở tốc độ đã định cho đến khi một lệnh dừng (ví dụ: A_STOP) hoặc lệnh di chuyển khác được kích hoạt.

Lệnh A_VELMOVE thường được kích hoạt bằng xung sườn (rising edge), nghĩa là nó chỉ thực thi khi tín hiệu điều khiển chuyển từ trạng thái OFF sang ON.

Cú pháp lệnh A_VELMOVE và giải thích tham số chi tiết

Cú pháp:

A_VELMOVE S0 S1 S2 S3

Giải thích các toán hạng (tham số):

Toán hạng Tên Kiểu dữ liệu Đơn vị Ghi chú
S0 Velocity FP64 Command unit/s Thiết lập tốc độ: Tốc độ mà trục sẽ di chuyển liên tục. Giá trị dương cho chiều thuận, giá trị âm cho chiều ngược. FP64 (Floating Point 64-bit) cho phép độ chính xác cao. Đơn vị “Command unit/s” phụ thuộc vào cài đặt quy đổi đơn vị của trục (ví dụ: xung/s, mm/s, độ/s, v.v.).
S0+4 Acceleration FP64 Command unit/s^2 Thiết lập tăng tốc: Tốc độ mà trục tăng tốc từ 0 (hoặc từ tốc độ hiện tại) đến tốc độ đặt (Velocity). Gia tốc cao giúp đạt tốc độ nhanh hơn nhưng có thể gây sốc cơ khí. Gia tốc thấp giúp chuyển động êm hơn.
S0+8 Deceleration FP64 Command unit/s^2 Thiết lập giảm tốc: Tốc độ mà trục sẽ giảm tốc khi lệnh A_VELMOVE bị ngắt hoặc khi một lệnh dừng khác được kích hoạt. Giá trị này xác định độ “êm” khi dừng.
S0+12 Jerk FP64 Command unit/s^3 Thiết lập gia tốc (Jerk): Là đạo hàm của gia tốc, đại diện cho tốc độ thay đổi của gia tốc. Kiểm soát Jerk giúp các chuyển động bắt đầu và dừng mượt mà hơn, giảm rung động và mài mòn cơ khí. Giá trị Jerk cao có thể gây giật, ngược lại Jerk thấp sẽ tạo ra đường cong chuyển động mềm mại hơn.
S0+16 ContinuousMode INT16U Chế độ cập nhật liên tục:
0: Không cập nhật. Các thông số vận tốc, gia tốc, giảm tốc sẽ không thay đổi trong quá trình chạy lệnh. <br>• 1: Cho phép thay đổi giá trị khi đang chạy lệnh. Điều này cho phép bạn điều chỉnh tốc độ, gia tốc hoặc giảm tốc “on-the-fly” (ngay trong khi trục đang di chuyển), hữu ích cho các ứng dụng đòi hỏi sự linh hoạt cao trong việc thay đổi tốc độ đột ngột.
S0+17 Direction INT16U Hướng di chuyển:
0: Không có hướng (hướng sẽ được suy ra từ dấu của giá trị Velocity S0). <br>• 1: Hướng thuận (Positive). <br>• 2: Hướng ngược (Negative). <br>• 3: Đường đi ngắn nhất. (Ít áp dụng cho chuyển động vận tốc liên tục, thường dùng trong di chuyển vị trí). <br>• 4: Hướng hiện tại. Trục sẽ tiếp tục di chuyển theo hướng mà nó đang di chuyển (nếu có) hoặc hướng được xác định bởi dấu của Velocity S0.
S0+18 BufferMode INT16U Chế độ bộ nhớ đệm:
0: Chế độ cho phép làm gián đoạn các lệnh chuyển động khác (Aborting Mode). Lệnh A_VELMOVE sẽ được thực thi ngay lập tức, có thể dừng hoặc ghi đè lên lệnh chuyển động trước đó. <br>• 1: Chế độ lưu bộ nhớ đệm (Buffered Mode). Lệnh A_VELMOVE sẽ được xếp vào hàng đợi và chỉ thực thi sau khi lệnh chuyển động hiện tại hoàn thành. Điều này hữu ích khi bạn cần một chuỗi các chuyển động liên tiếp mà không bị gián đoạn, đảm bảo sự liên tục và mượt mà giữa các lệnh.
S1 ErrCode INT16U Mã lỗi: Thanh ghi 16-bit không dấu dùng để báo cáo mã lỗi nếu quá trình di chuyển gặp sự cố. Việc kiểm tra giá trị của S1 giúp bạn chẩn đoán nguyên nhân lỗi một cách nhanh chóng.
S2 Done Bool Hoàn thành: Bit này sẽ chuyển sang ON (logic 1) khi lệnh A_VELMOVE đã được thực thi thành công. Với lệnh chạy liên tục, bit Done thường chỉ ON sau khi lệnh đã được chấp nhận và trục đã đạt đến vận tốc đặt ban đầu, hoặc khi lệnh bị ngắt bởi một lệnh khác.
S2+1 Busy Bool Đang thực thi: Bit này sẽ ON trong suốt quá trình lệnh A_VELMOVE đang được thực thi (trục đang tăng tốc hoặc di chuyển ở tốc độ liên tục). Nó sẽ OFF khi quá trình bị ngắt bởi một lệnh khác hoặc bị lỗi.
S2+2 Active Bool Hoạt động: Tương tự như Busy, bit này cho biết lệnh đã được PLC chấp nhận và đang trong quá trình xử lý.
S2+3 Abort Bool Bị gián đoạn: Bit này sẽ ON nếu quá trình di chuyển bị gián đoạn hoặc hủy bỏ đột ngột do một nguyên nhân bên ngoài (ví dụ: lệnh dừng khẩn cấp, một lệnh chuyển động khác được kích hoạt, lỗi phát sinh).
S2+4 Error Bool Bị lỗi: Bit này sẽ ON nếu quá trình di chuyển kết thúc nhưng gặp lỗi (ví dụ: không đạt được tốc độ, quá dòng, lỗi giới hạn). Khi bit này ON, bạn cần kiểm tra S1 (ErrCode) để biết mã lỗi cụ thể.
S3 Axis INT16U ID trục tác động: Đây là số ID của trục servo mà bạn muốn điều khiển di chuyển (ví dụ: Trục 0, Trục 1, v.v.). Điều này cho phép bạn kiểm soát việc di chuyển cho từng trục riêng biệt trong hệ thống đa trục.

 

Ví dụ thực tế: Điều khiển Servo trục ID0 chạy liên tục ở tốc độ 1000 xung/s

Giả sử chúng ta muốn điều khiển trục servo có ID là 0 chạy liên tục với tốc độ 1000 xung/s. Trục sẽ tiếp tục chạy cho đến khi có một lệnh khác (ví dụ: A_STOP) được kích hoạt.

// Kích hoạt lệnh A_VELMOVE cho Trục 0
// Khi M1 ON, Trục 0 sẽ bắt đầu chạy liên tục với tốc độ đặt sẵn
+-------+       +--------------------------------------------------------------------+
|       |       |                       A_VELMOVE                                    |
|  M1   +-------+  D_VEL D_ACC D_DEC D_JERK D_CONT D_DIR D_BUFF D100 M200 K0      |
| (Input)|       | (Velocity, Acc, Dec, Jerk, ContMode, Dir, BuffMode, ErrCode, Done/Busy/Active/Abort/Error, Axis 0) |
+-------+       +--------------------------------------------------------------------+

Trong đó:

  • M1: Bit đầu vào kích hoạt lệnh A_VELMOVE.
  • D_VEL (hoặc một thanh ghi tương đương): Giá trị 1000 (tốc độ 1000 xung/s).
  • D_ACC (hoặc một thanh ghi tương đương): Ví dụ 500 (gia tốc 500 xung/s^2).
  • D_DEC (hoặc một thanh ghi tương đương): Ví dụ 500 (giảm tốc 500 xung/s^2).
  • D_JERK (hoặc một thanh ghi tương đương): Ví dụ 10000 (Jerk 10000 xung/s^3).
  • D_CONT (hoặc một thanh ghi tương đương): 0 (Không cho phép cập nhật liên tục).
  • D_DIR (hoặc một thanh ghi tương đương): 0 (Hướng theo dấu của Velocity).
  • D_BUFF (hoặc một thanh ghi tương đương): 0 (Chế độ không đệm).
  • D100: Thanh ghi kiểm tra lỗi (ErrCode).
  • M200: Bit trạng thái cho quá trình thực thi lệnh (Done/Busy/Active/Abort/Error).
  • K0: Chỉ định trục 0.

Mô tả quá trình:

  1. Khi M1 ON, lệnh A_VELMOVE cho trục 0 được kích hoạt. Bit M200+1 (Busy) và M200+2 (Active) sẽ ON.
  2. Trục 0 sẽ bắt đầu tăng tốc từ tốc độ hiện tại (hoặc 0) theo giá trị gia tốc (D_ACC) và Jerk (D_JERK) đã đặt.
  3. Khi đạt đến tốc độ 1000 xung/s (D_VEL), trục sẽ tiếp tục di chuyển với tốc độ này cho đến khi:
    • Lệnh A_VELMOVE bị ngắt (ví dụ, M1 chuyển OFF).
    • Một lệnh chuyển động khác (như A_STOP, A_MOVER) được kích hoạt và ghi đè lên A_VELMOVE.
    • Trục gặp phải một lỗi (ví dụ: quá dòng, giới hạn).
  4. Bit M200 (Done) sẽ ON sau khi lệnh được chấp nhận và bắt đầu thực thi. Nó sẽ không OFF cho đến khi lệnh bị ngắt hoặc hoàn thành theo một cách nào đó (chứ không phải khi trục dừng hẳn, vì nó là lệnh chạy liên tục). Bit M200+1 (Busy) và M200+2 (Active) sẽ duy trì ON trong suốt quá trình trục đang di chuyển liên tục.

Lệnh A_VELMOVE Di Chuyển Chế Độ Tốc Độ Qua Ethercat

Code mẫu sử dụng lệnh A_VELMOVE: Download

Ứng dụng phổ biến của lệnh A_VELMOVE

Lệnh A_VELMOVE là lựa chọn lý tưởng cho các ứng dụng yêu cầu chuyển động liên tục và ổn định về tốc độ:

  • Băng tải: Duy trì tốc độ ổn định để di chuyển sản phẩm.
  • Hệ thống cấp liệu: Cấp vật liệu liên tục vào quy trình sản xuất.
  • Máy cắt/cuộn: Điều khiển tốc độ quay của trục để cắt hoặc cuộn vật liệu với tốc độ không đổi.
  • Máy đóng gói: Di chuyển bao bì hoặc sản phẩm qua các trạm với tốc độ cố định.
  • Kiểm tra tốc độ: Chạy trục ở một tốc độ nhất định để kiểm tra hiệu suất hoặc độ ồn.

Lợi ích khi sử dụng A_VELMOVE trong hệ thống EtherCAT:

  • Đồng bộ hóa tuyệt vời: Mạng EtherCAT cho phép đồng bộ hóa nhiều trục với độ chính xác cao, điều này rất quan trọng trong các ứng dụng mà nhiều trục cần chạy cùng tốc độ hoặc có mối quan hệ tốc độ nhất định (ví dụ: máy in, máy dệt).
  • Phản hồi tức thì: Các lệnh thay đổi tốc độ hoặc dừng được truyền tải và thực thi với độ trễ tối thiểu, cho phép kiểm soát linh hoạt và chính xác.
  • Kiểm soát chuyển động mượt mà: Khả năng cài đặt Acceleration, Deceleration và Jerk giúp quá trình tăng/giảm tốc diễn ra êm ái, giảm rung động và tăng tuổi thọ cơ khí.
  • Linh hoạt trong lập trình: Lệnh đơn giản để thực hiện các chuyển động vận tốc, giảm thiểu sự phức tạp trong việc tính toán vị trí.

Khắc phục sự cố khi A_VELMOVE gặp lỗi

Nếu lệnh A_VELMOVE không hoạt động như mong đợi hoặc bit S2+4 (Error) ON, hãy kiểm tra các điểm sau:

  1. Kiểm tra S1 (ErrCode): Luôn là bước đầu tiên để chẩn đoán. Mã lỗi sẽ chỉ ra nguyên nhân cụ thể (ví dụ: trục vượt quá giới hạn, lỗi thông số, driver báo lỗi). Tham khảo tài liệu hướng dẫn của PLC và driver servo.
  2. Đảm bảo Servo đã ON: Lệnh A_VELMOVE chỉ có thể thực thi khi driver servo đã được cấp nguồn và sẵn sàng hoạt động (Servo ON, sử dụng lệnh A_PWR).
  3. Kiểm tra các thông số chuyển động (S0 đến S0+12): Đảm bảo các giá trị Velocity, Acceleration, Deceleration và Jerk được thiết lập hợp lý và nằm trong giới hạn cho phép của trục và driver.
  4. Kiểm tra giới hạn phần cứng/phần mềm: Mặc dù là lệnh vận tốc, trục vẫn có thể gặp lỗi nếu cố gắng di chuyển ra ngoài giới hạn vật lý hoặc giới hạn mềm đã cài đặt.
  5. Kiểm tra đấu nối EtherCAT: Đảm bảo kết nối mạng EtherCAT giữa PLC và driver servo ổn định, không có lỗi truyền thông.
  6. Trạng thái trục: Đảm bảo trục không đang ở trạng thái lỗi (Alarm) hoặc đang thực hiện một lệnh chuyển động khác không tương thích với BufferMode được chọn.
  7. Đảm bảo có lệnh dừng: Nhớ rằng A_VELMOVE là lệnh chạy liên tục. Nếu không có lệnh dừng được kích hoạt sau đó, trục sẽ tiếp tục chạy cho đến khi gặp giới hạn hoặc lỗi.

Kết luận

Lệnh A_VELMOVE là một phần không thể thiếu trong việc điều khiển các chuyển động liên tục theo vận tốc cho trục servo trong hệ thống EtherCAT. Bằng cách thiết lập chính xác tốc độ, gia tốc, giảm tốc và Jerk, cùng với việc kiểm soát các chế độ hoạt động, bạn có thể tạo ra các chuyển động mượt mà, ổn định và hiệu quả, đáp ứng yêu cầu của nhiều ứng dụng tự động hóa công nghiệp.

Bạn cần hỗ trợ chuyên sâu về lệnh A_VELMOVE hoặc các vấn đề PLC/Servo EtherCAT khác?

Hãy liên hệ ngay với đội ngũ kỹ thuật của chúng tôi để được tư vấn và hỗ trợ nhanh chóng: