PLC và Servo là hai công nghệ cốt lõi trong tự động hóa hiện đại. Để điều khiển Servo một cách chính xác, lệnh phát xung là công cụ không thể thiếu. Cùng Dubai Electric tìm hiểu về lập trình PLC Delta điều khiển Servo bằng lệnh phát xung trong bài viết dưới đây nhé!
Vấn đề điều khiển
Khi cài đặt Servo ở chế độ điều khiển vị trí, mỗi vòng quay của động cơ sẽ được chuyển đổi thành số xung bởi bộ điều khiển – Drive của Servo. Chẳng hạn, nếu có 160.000 xung cho mỗi vòng quay, điều này có nghĩa là PLC cần phát đủ 160.000 xung để động cơ Servo quay được một vòng. Trong bài viết này, tôi không đề cập đến độ phân giải, tức là số xung của Encoder gắn trên động cơ.
Về tốc độ, tốc độ động cơ trong 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ể tính toán tốc độ vòng/phút của động cơ dựa vào tần số và số xung/vòng, chi tiết cách tính sẽ được trình bày bên dưới.
Vấn đề lập trình PLC
Dưới đây là phương pháp lập trình PLC để phát xung điều khiển Servo:
Lệnh điều khiển phát xung
Trong hình trên, các phần mô tả như sau:
- P1 là chương trình con được đặt tên là AC Servo do người lập trình xác định.
- M1000 là bit luôn ON khi PLC đang chạy, dùng để tạo điều kiện đầu vào cho lệnh, nhằm tránh trường hợp vô điều kiện.
- M13 là bit rơ le phụ trong chương trình, cho phép thực hiện lệnh phát xung.
- M10 là bit rơ le phụ trong chương trình, cho phép chạy chế độ phát xung liên tục, không giới hạn số xung.
- M1029 là bit rơ le trạng thái, được PLC tự động ON khi lệnh phát xung đã phát đủ số xung yêu cầu (trong chế độ phát xung có giới hạn) và không ON khi chạy liên tục.
- M12 là 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ỉ tập trung vào lệnh phát xung và bit báo trạng thái hoàn thành phát xung.
Cách viết lệnh phát xung
Trong cửa sổ soạn thảo chương trình theo dạng Ladder, người lập trình chỉ cần nhập trực tiếp câu lệnh: DPLSY D500 D510 Y0
.
Trong ví dụ này, cấu trúc lệnh phát xung DPLSY bao gồm:
- Chữ D: Đại diện cho dạng Double, cho phép ghép đôi các thanh ghi dữ liệu thành thanh ghi lớn hơn. Ví dụ, D500 là thanh ghi 16 bit trên PLC Delta, và khi sử dụng trong lệnh Double, nó sẽ kết hợp với thanh ghi D501 để tạo thành thanh ghi 32 bit. Khi đó, D500 và D501 sẽ cùng hoạt động như một thanh ghi, với D500 chứa byte thấp và D501 chứa byte cao.
- Chữ PLSY: Là ký hiệu cho lệnh phát xung vuông trong PLC với ngõ ra Y.
- D500-D501 (Double): Thanh ghi này chứa giá trị tần số phát xung, được tính theo đơn vị Hz dưới dạng số nguyên.
- D510-D511 (Double): Thanh ghi này chứa số xung sẽ phát ra tại ngõ ra phát xung.
- Y0: Địa chỉ của ngõ ra Y0, nơi mà xung sẽ được phát ra. Tùy thuộc vào loại PLC, bạn cần chọn ngõ ra phát xung theo quy định trong tài liệu.
- M1029: Bit báo trạng thái của PLC. Khi M1029 ON, có nghĩa là lệnh phát xung ở ngõ ra Y0 đã phát đủ số xung trong thanh ghi D510-D511. Nếu D510-D511 = 0, PLC sẽ hiểu rằng số xung phát ra là liên tục, không giới hạn.
Chú ý: Mỗi loại PLC sẽ có giới hạn về tốc độ phát xung và số ngõ ra cho phép phát xung khác nhau. Người lập trình cần đọc kỹ tài liệu của PLC trước khi lựa chọn.
Tham khảo:
- DVP14SS211T: Phát xung 10kHz
- DVP12SC11T: Phát xung 100kHz
- DVP28SV11T: Phát xung 200kHz
Ngoài ra, cần chú ý rằng ngõ ra phát xung trên PLC phải là dạng ngõ ra Transistor, tuyệt đối không sử 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 M111 ON và giá trị D500 (16 bit, không phải Double 32 bit) được thiết lập, lệnh phát xung sẽ được kích hoạt, dẫn đến việc ngõ ra Y0 phát ra một chuỗi xung vuông cho đến khi số xung phát ra đạt giá trị trong thanh ghi D510. Nếu D510 = 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. Trong trường hợp này, tần số phát xung là D500 = 100Hz.
Làm sao để biết PLC đã phát xung hoàn thành, kết thúc?
Như đã đề cập trước đó, bit M1029 sẽ báo trạng thái kết thúc lệnh phát xung khi số xung phát ra khác 0 và bằng với giá trị lưu trong thanh ghi chứa số xung (D510). Lập trình viên có thể lập trình để kiểm tra trạng thái của bit M1029 nhằm xác nhận rằng việc phát xung đã hoàn tất.
Ví dụ, khi lập trình cho máy cắt bao bì, nếu chiều dài túi tương ứng với 5000 xung, chúng ta sẽ sử dụng lệnh trên và nạp giá trị K5000 vào thanh ghi D510, tốc độ sẽ tùy thuộc vào yêu cầu và được chuyển đổi thành Hz nạp vào thanh ghi D500.
Sau khi nạp xong giá trị, hãy Set ON bit M111. PLC sẽ thực hiện phát xung ở ngõ ra Y0, và khi phát đủ 5000 xung tương ứng với chiều dài bao bì, bit M1029 sẽ ON. Lúc này, sử dụng logic lập trình để hủy phát xung bằng cách Set OFF M111 và thực hiện các bước tiếp theo như ra 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à quy thành chiều dài trên PLC
Như đã biết, trong ví dụ này, tham số đặt 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 hoàn thành phần cơ khí, chúng ta cần xác định và đo thực tế hoặc tính toán thiết kế từ ban đầu chiều dài dịch chuyển tương ứng với số mm/vòng quay của trục động cơ Servo. Điều này có nghĩa là khi trục động cơ quay một vòng, máy sẽ di chuyển được chiều dài bao nhiêu.
Giả sử chiều dài dịch chuyển là 25mm/vòng quay. Từ đó, ta có công thức tính cho chiều dài dịch chuyển là 50cm (tương đương 500mm) như sau:
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 viết lệnh phát đủ 100.000 xung, động cơ sẽ quay và máy sẽ di chuyển được 50cm.
Có một mẹo khi lập trình với số nguyên Int mà không cần chuyển sang số thực Real: hãy thực hiện phép nhân trước và phép chia sau. Nếu thực hiện phép chia trực tiếp trên số nguyên, phần dư sẽ bị loại bỏ, dẫn đến sai số ngày càng lớn theo thời gian.
Khi đo thực tế, sẽ luôn có một mức sai số nhất định, nhưng điều này giúp cho việc thiết kế cơ khí không cần tính toán chi tiết tỷ số truyền của phần truyền động. Để tăng độ chính xác, chúng ta có thể quy chiều dài thành giá trị nhỏ hơn. Sau khi có kết quả, chúng ta sẽ quy đổi về cm hoặc mm tùy 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
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 như sau:
- 100Hz tương đương với 1 giây phát 100 xung, do đó trong 1 phút sẽ phát ra:
100 x 60 = 6000 xung
- Số vòng quay/phút ở 100Hz sẽ là:
6000 / 5000 = 1.2 Vòng / Phút
Tại sao phải quan tâm đến tốc độ định mức của motor khi thực hiện lệnh phát xung?
Giả sử động cơ có tốc độ định mức là 3000 vòng/phút và tham số đặt là 5000 xung/vòng quay.
- Số xung cần phát trong 1 phút sẽ là:
3000×5000 = 15.000.000 xung
- Số xung cần phát trong 1 giây sẽ là:
15.000.000 / 60 = 250.000 xung
- Tần số phát xung để đạt tốc độ 3000 vòng/phút là:
250.000 Hz = 250kHz
Nếu chúng ta phát tần số lớn hơn 250 kHz, điều này có nghĩa là Drive sẽ nhận quá nhiều xung so với giới hạn định mức mỗi giây, dẫn đến việc không thể điều khiển chính xác động cơ. Kết quả có thể gây ra tình trạng giật, mất xung và sai số về vị trí đã tính toán.
Tốc độ phát xung có ảnh hưởng đến lựa chọn PLC như thế nào?
Mỗi loại PLC được thiết kế đặc biệt cho ngõ ra phát xung, với số lượng ngõ ra và tốc độ (tần số) phát xung tỷ lệ thuận với giá thành sản phẩm và hiệu quả của hệ thống.
Giả sử chúng ta chỉ cần phát xung ở tốc độ 5 kHz, lúc này chỉ cần chọn PLC có tốc độ phát xung lớn hơn 5 kHz. Ví dụ: DVP14SS211T có khả năng phát xung 10 kHz.
Nếu chọn PLC với tốc độ phát xung thấp mà sau này cần đạt tốc độ cao hơn, hệ thống sẽ không thể đáp ứng yêu cầu. Nếu lập trình phát với tốc độ vượt quá khả năng cho phép của PLC, ngõ ra phát xung có thể không hoạt động chính xác và dẫn đến tình trạng mất xung.
Sự khác nhau 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
Ngõ ra phát xung được thiết kế với các linh kiện bán dẫn có tốc độ đóng cắt cao, chẳng hạn như transistor trường (như MOSFET, v.v.).
Ngược lại, ngõ ra không có khả năng phát xung tốc độ cao, như ngõ ra dạng relay, có tốc độ đáp ứng cơ học chậm và tuổi thọ cơ khí khi đóng cắt nhanh không cao. Do đó, chúng không thể phát xung với tốc độ quá cao và không nên được sử dụng để phát xung liên tục, ngay cả ở tốc độ thấp. Chu kỳ hoạt động có thể từ 1 giây trở lên, nhưng điều này vẫn có thể giảm đáng kể tuổi thọ của relay.
Ngõ ra không có khả năng phát xung tốc độ cao vẫn cho phép phát ở tốc độ thấp hơn bằng các lệnh tương tự, điển hình là ngõ ra dạng transistor lưỡng cực (BJT).
Để tìm hiểu thêm về phần cứng và điện tử, bạn có thể trao đổi trực tiếp hoặc tham khảo thêm qua sách và tài liệu trên mạng.
Có thể bạn quan tâm: