Lập trình PLC Delta điều khiển Servo bằng lệnh phát xung

lập trình plc delta điều khiển servo

Trong ngành công nghiệp tự động hóa, lập trình PLC (Programmable Logic Controller) đã trở thành một công cụ quan trọng để điều khiển và giám sát các quy trình sản xuất. Một trong những ứng dụng phổ biến của PLC là điều khiển các hệ thống Servo, và việc sử dụng lệnh phát xung là một phương pháp phổ biến để thực hiện điều này. Trong bài viết này, Dubai Electric sẽ tìm hiểu về cách lập trình PLC Delta để điều khiển Servo bằng lệnh phát xung.

Vấn đề lập trình PLC

Lập trình viên có thể sử dụng lệnh phát xung trong PLC Delta để điều khiển Servo và ứng dụng công nghiệp chế tạo máy. Sau khi nắm vững về PLC và Servo, lập trình viên có thể tìm hiểu về điều khiển phát xung để điều khiển Servo ở chế độ điều khiển vị trí. Công nghệ này được áp dụng trong các máy cắt bao bì, máy đóng gói, máy phóng nguyên liệu, và nhiều ứng dụng khác.

Để điều khiển Servo ở chế độ điều khiển vị trí, Servo có tham số cho phép cài đặt số xung được phát ra trong mỗi vòng quay. PLC sẽ sử dụng lệnh phát xung với các tham số như tần số phát xung và số lượng xung phát ra.

Vấn đề quan trọng trong điều khiển là cài đặt Servo ở chế độ điều khiển vị trí. Khi đó, bộ điều khiển (Drive) của Servo sẽ chuyển đổi số xung nhận được từ PLC thành mỗi vòng quay của động cơ. Ví dụ, nếu cài đặt Servo với 160.000 xung/vòng quay, điều đó có nghĩa là khi PLC phát đủ 160.000 xung, động cơ Servo sẽ quay được đúng 1 vòng. Trong bài viết này, chưa đề cập đến độ phân giải của Encoder được gắn trên động cơ.

Về tốc độ, tốc độ của động cơ ở chế độ điều khiển vị trí sẽ tương đương với tần số phát xung của PLC. Chúng ta có thể dựa vào tần số phát xung cộng với số xung/vòng để tính toán tốc độ vòng/phút của động cơ. Chi tiết cách tính được trình bày bên dưới.

Lệnh điều khiển phát xung

Lệnh điều khiển phát xung

rong hình trên, các phần mô tả như sau:

  • P1 là chương trình con P1 có tên AC Servo, được đặt bởi người lập trình.
  • M1000 là một bit luôn ở trạng thái ON khi PLC đang chạy (RUN) – nó được sử dụng để tạo điều kiện đầu vào cho các câu lệnh và tránh tình trạng không có điều kiện.
  • M13 là một bit rơ le phụ trong chương trình, được người lập trình đặt để cho phép thực hiện lệnh phát xung.
  • M10 là một bit rơ le phụ trong chương trình, được người lập trình đặt để cho phép chạy chế độ phát xung liên tục mà không giới hạn số lượng xung.
  • M1029 là một bit rơ le trạng thái trong chương trình, tự động được kích hoạt (ON) bởi PLC khi lệnh phát xung đã phát đủ số xung được yêu cầu trong chế độ có giới hạn, và nó không được kích hoạt khi chạy liên tục.
  • M12 là một bit rơ le phụ trong chương trình, được người lập trình đặt cho chế độ tự động.

Trong ví dụ lập trình này, chúng ta chỉ quan tâm đến lệnh phát xung và bit báo trạng thái khi phát xung đã hoàn thành.

Cách viết lệnh phát xung

Cách viết lệnh phát xung có thể được thực hiện như sau trong cửa sổ soạn thảo chương trình theo dạng Ladder: gõ trực tiếp câu lệnh “DPLSY D500 D510 Y0”.

Cách viết lệnh phát xung

Trong ví dụ này, cấu trúc lệnh phát xung DPLSY bao gồm các phần sau:

  • Chữ “D” đại diện cho dạng Double, nó chỉ ra rằng các thanh ghi dữ liệu sẽ được ghép đôi để tạo thành một thanh ghi lớn hơn. Ví dụ: “D500” là một thanh ghi 16 bit trong PLC Delta, khi sử dụng trong câu lệnh với dạng Double, nó sẽ được ghép chung với thanh ghi phía sau là “D501” để tạo thành một thanh ghi 32 bit. Lúc này, “D501” và “D500” sẽ thành một thanh ghi và được chia thành hai phần dưới dạng byte thấp và byte cao trong “D501” và “D500”.
  • Chữ “PLSY” là ký hiệu cho lệnh phát xung vuông trong PLC với đầu ra là Y.
  • “D500-D501” (Double): Đây là thanh ghi chứa giá trị tần số phát xung, tính bằng đơn vị Hz dưới dạng số nguyên.
  • “D510-D511” (Double): Đây là thanh ghi chứa số xung sẽ được phát ra tại đầu ra phát xung.
  • “Y0” là địa chỉ của đầu ra Y0, nơi mà xung sẽ được phát ra. Ngõ ra phát xung được lựa chọn phụ thuộc vào loại PLC và được quy định trong tài liệu.
  • “M1029” là bit báo trạng thái của PLC: Khi “M1029” được kích hoạt (ON), nghĩa là lệnh phát xung tại đầu ra Y0 đã phát đủ số xung yêu cầu trong thanh ghi “D510-D511”.
  • Nếu “D510-D511” = 0, PLC sẽ hiểu rằng không có xung được phát ra với nghĩa là phát xung liên tục và không giới hạn.
  • Chú ý: Tốc độ phát xung và số lượng ngõ ra cho phép phát xung sẽ được giới hạn khác nhau tùy thuộc vào từng loại PLC. Người lập trình cần đọc kỹ tài liệu của PLC để lựa chọn đúng.

Tham khảo:

  • DVP14SS211T: Phát xung với tần số 10kHz.
  • DVP12SC11T: Phát xung với tần số 100kHz.
  • DVP28SV11T: Phát xung với tần số 200kHz.

Ngoài ra, cần lưu ý rằng đầu ra phát xung của PLC phải được chọn là dạng ngõ ra Transistor và không được chọn dạng Relay.

Khi nào thì lệnh phát xung có tác dụng?

Khi điều kiện lập trình đạt yêu cầu, xem hình ví dụ bên dưới:

Khi nào thì lệnh phát xung có tác dụng?
Khi bit M111 được kích hoạt (ON) và giá trị của thanh ghi D500 (16 bit, không phải Double 32 bit) được thiết lập, lệnh phát xung sẽ được thực thi. Điều này dẫn đến một chuỗi xung vuông được tạo ra tại đầu ra Y0 cho đến khi số xung phát ra bằng giá trị của thanh ghi D510. Nếu giá trị của thanh ghi D510 là 0, lệnh phát xung sẽ tạo ra một chuỗi xung liên tục cho đến khi bit M111 được tắt (OFF). Trong trường hợp này, tần số phát xung là D500 = 100Hz.

Làm thế nào để biết khi PLC đã hoàn thành việc phát xung?

Như đã đề cập trước đó, bit M1029 sẽ báo trạng thái kết thúc của lệnh phát xung khi số xung khác 0 và bằng giá trị trong thanh ghi D510, chứa số xung phát ra. Người lập trình có thể sử dụng lệnh điều kiện để kiểm tra trạng thái của bit M1029 và xác nhận rằng việc phát xung đã hoàn thành.

Ví dụ, trong việc lập trình máy cắt bao bì, nếu chiều dài của túi tương đương với 5000 xung, chúng ta sử dụng lệnh và nạp giá trị K5000 vào thanh ghi D510. Tốc độ phát xung được điều chỉnh theo yêu cầu và được chuyển đổi thành Hz và nạp vào thanh ghi D500.

Sau khi giá trị đã được nạp, chúng ta đặt bit M111 thành ON. PLC sẽ thực hiện phát xung tại đầu ra Y0 và khi đã phát đủ 5000 xung, tương đương với chiều dài của bao bì, bit M1029 sẽ được kích hoạt (ON). Lúc này, chúng ta có thể sử dụng logic lập trình để dừng việc phát xung bằng cách tắt bit M111 và tiếp tục các bước tiếp theo như lệnh cắt bao bì, thổi túi, v.v.

Cách lập trình để tính toán chiều dài thực tế và chuyển đổi thành chiều dài trên PLC.

Chúng ta đã biết rằng ví dụ với tham số số xung/vòng quay là 5000 xung. Đây là một điều kiện cần để tính toán chiều dài thực tế.

Sau khi đã có các thành phần cơ khí đầy đủ, chúng ta cần tính và đo chiều dài thực tế hoặc tính toán từ đầu như sau: số mm/vòng quay của trục động cơ Servo. Nghĩa là khi trục động cơ quay một vòng, phần dịch chuyển của máy di chuyển một khoảng bao nhiêu?

Giả sử là 25mm/vòng quay. Từ đó, chúng ta có công thức tính cho chiều dài dịch chuyển là 50cm, tương đương với 500mm: Số xung cần phát = (chiều dài đặt) / (chiều dài/vòng quay) x (số xung/vòng quay) => Số xung cần phát = 500 / 25 x 5000 = 100,000 xung.

Vậy chỉ cần lập trình để phát đủ 100,000 xung, động cơ sẽ quay và máy sẽ di chuyển 50cm.

Cách lập trình để tính toán chiều dài thực tế và chuyển đổi thành chiều dài trên PLC.

Có một mẹo khi lập trình với số nguyên Int mà không muốn chuyển sang số thực Real: thực hiện phép nhân trước và phép chia sau. Bởi vì nếu chúng ta thực hiện phép chia với số nguyên, phần dư sẽ bị bỏ đi. Khi đó, sai số sẽ ngày càng tăng lên khi thực hiện các phép tính sau đó.

Trong trường hợp đo thực tế, có thể có một số sai số nhất định, nhưng điều này không yêu cầu tính toán tỷ lệ truyền chi tiết của hệ thống truyền động trong thiết kế cơ khí. Để đạt được độ chính xác cao hơn, chúng ta có thể quy đổi đơn vị chiều dài thành giá trị nhỏ hơn. Sau khi thu được kết quả, chúng ta có thể quy đổi trở lại thành đơn vị cm hoặc mm tuỳ theo yêu cầu.

Cách lập trình tính toán tốc độ thực của Motor Servo theo tần số phát xung

Cách lập trình tính toán tốc độ thực của động cơ Servo dựa trên tần số phát xung như sau: Giả sử chúng ta phát xung với tần số 100Hz. Tốc độ định mức của động cơ là 3000 vòng/phút, và tham số đặt số xung/vòng quay là 5000 xung/vòng quay. => Để tính tốc độ động cơ tại tần số 100Hz, ta thực hiện các bước sau:

  • 100Hz tương đương với 1 giây phát 100 xung => 1 phút phát số xung là: 100 x 60 = 6000 xung
  • Số vòng quay/phút ở tần số 100Hz là: 6000 / 5000 = 1.2 Vòng/phút

Tại sao quan tâm tới tốc độ định mức của động cơ khi lập trình lệnh phát xung điều khiển? Nếu chúng ta lập trình phát tần số xung vượt quá tốc độ định mức của động cơ (3000 vòng/phút), ví dụ như 250kHz, sẽ dẫn đến việc động cơ không thể điều khiển được. Điều này có thể gây ra giật động cơ, mất xung và sai số về vị trí đã tính toán.

Tốc độ phát xung ảnh hưởng đến lựa chọn PLC như thế nào? Mỗi loại PLC được thiết kế với ngõ ra phát xung có số lượng và tốc độ (tần số) phát xung tỷ lệ thuận với giá thành và hiệu suất của hệ thống. Ví dụ, nếu chúng ta chỉ cần phát 5kHz, chúng ta chỉ cần chọn PLC có tốc độ phát xung > 5kHz, như DVP14SS211T với tốc độ phát xung 10kHz. Nếu chúng ta lập trình phát với tốc độ cao hơn tốc độ cho phép của PLC, như được tính toán ở trên, ngõ ra phát xung sẽ không đáp ứng được và có thể gây mất xung.

Sự khác biệt cơ bản giữa ngõ ra phát xung tốc độ cao và ngõ ra không phát xung hoặc tốc độ thấp là gì?

  • Ngõ ra phát xung được thiết kế với linh kiện bán dẫn như Transistor trường (ví dụ như Mos FET) có tốc độ đóng mở cao.
  • Ngõ ra không phát xung hoặc tốc độ thấp không có khả năng phát xung ở tốc độ cao như ngõ ra dạng Relay, do cơ chế cơ khí yếu và tuổi thọ cơ khí giảm khi đóng mở nhanh. Ngõ ra dạng Relay không nên được sử dụng để phát xung liên tục dù tốc độ thấp. Chu kỳ có thể là 1 giây hoặc nhiều hơn, nhưng vẫn gây giảm tuổi thọ đáng kể của Relay. Ngõ ra không phát xung hoặc tốc độ thấp vẫn cho phép phát ở tốc độ thấp hơn bằng cách sử dụng các lệnh tương tự, thường là ngõ ra dạng Transistor lưỡng cực BJT.

Đối với kiến thức chi tiết về phần cứng và điện tử, vui lòng tìm hiểu thông qua trao đổi trực tiếp hoặc tìm hiểu qua các nguồn tài liệu trực tuyến và sách vở.

Có thể bạn quan tâm:

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *