Điều khiển động cơ servo bằng PLC: đấu xung, cài bánh răng điện tử và lập trình định vị
Điều khiển động cơ servo bằng PLC là cách phổ biến nhất để định vị trục máy trong máy đóng gói, máy cắt theo chiều dài, bàn trượt vít me hay cơ cấu gắp đặt. PLC tính quãng đường, tốc độ, thời gian tăng giảm tốc và phát lệnh; driver servo nhận lệnh rồi đóng vòng vị trí – tốc độ – dòng điện dựa trên encoder để motor bám đúng lệnh. Muốn hệ chạy chính xác, phải chọn đúng loại ngõ ra PLC, đấu đúng mức điện áp tín hiệu, cài bánh răng điện tử khớp giữa hai bên và lập trình trình tự Servo ON, về gốc, định vị, xử lý lỗi.
Nội dung dưới đây đi từ phương thức giao tiếp, cách chọn PLC theo tần số xung, sơ đồ đấu NPN/PNP/line driver, ví dụ tính bánh răng điện tử với vít me 10 mm, đến lệnh định vị trên Mitsubishi FX3U/FX5U, Siemens S7-1200, Delta DVP và các lỗi hay gặp khi chạy thực tế.
Nội dung
- 1. Hệ điều khiển servo bằng PLC gồm những gì
- 2. Các phương thức điều khiển servo từ PLC
- 3. Chọn PLC phát xung điều khiển servo
- 4. Đấu nối ngõ ra phát xung PLC với driver servo
- 5. Tính bánh răng điện tử và tốc độ tối đa theo tần số xung
- 6. Lập trình điều khiển servo trên PLC Mitsubishi FX3U và FX5U
- 7. Điều khiển servo bằng PLC Siemens S7-1200 trong TIA Portal
- 8. Lập trình phát xung trên PLC Delta DVP
- 9. Servo ON, Alarm, Reset, In-position và trình tự vận hành
- 10. Về gốc, công tắc hành trình và đọc vị trí phản hồi
- 11. Lỗi thường gặp khi điều khiển servo bằng PLC
- 12. Câu hỏi thường gặp về điều khiển động cơ servo bằng PLC
- 13. Kết luận
1. Hệ điều khiển servo bằng PLC gồm những gì
Một trục servo điều khiển từ PLC gồm PLC, driver servo và motor servo có encoder. Ở phương thức phát xung, PLC không đọc encoder để đóng vòng vị trí; việc đó do driver đảm nhận. PLC chỉ quyết định đi bao nhiêu xung, tần số bao nhiêu, tăng tốc trong bao lâu, còn driver so sánh xung lệnh với xung encoder để triệt tiêu sai lệch.
Hình dưới minh họa vị trí của bộ điều khiển cấp trên (PLC, bộ điều khiển chuyển động hoặc máy tính) so với driver servo: dây điều khiển vào cổng I/O, dây encoder về cổng riêng, cổng truyền thông dùng để cài thông số.

Giữa PLC và driver có bốn nhóm tín hiệu cần liệt kê đủ trước khi vẽ sơ đồ:
| Nhóm | Tín hiệu điển hình | Chiều |
| Lệnh chuyển động | PULSE, SIGN hoặc CW/CCW | PLC → driver, cần ngõ ra tốc độ cao |
| Điều khiển | Servo ON, Reset, dừng khẩn, giới hạn hành trình LSP/LSN | PLC hoặc công tắc → driver |
| Trạng thái | Alarm, Ready, In-position | Driver → ngõ vào PLC |
| Phản hồi | Xung encoder chia tần A/B, pha Z | Driver → PLC, dùng về gốc và kiểm tra vị trí |
Các driver đi kèm motor servo AC 220V phổ biến đều có cổng I/O nhận cả xung open collector lẫn xung vi sai, nên điều khiển được từ các PLC thông dụng.
2. Các phương thức điều khiển servo từ PLC
a. Phát xung: xung + hướng, CW/CCW, pha A/B
Đây là cách dùng nhiều nhất cho máy một đến bốn trục. Số xung quyết định quãng đường, tần số xung quyết định tốc độ. Có ba dạng:
- Xung + hướng (PULSE/SIGN): một dây phát xung, một dây giữ mức logic chỉ chiều quay; dạng mặc định của hầu hết PLC.
- CW/CCW: chạy thuận phát xung ở dây thứ nhất, chạy nghịch phát ở dây thứ hai.
- Pha A/B lệch 90°: giống tín hiệu encoder, chiều quay xác định bằng pha đi trước.
Kiểu xung trên driver phải trùng với kiểu PLC phát. Ở driver Mitsubishi MR-J4/MR-JE dòng A, dạng xung cài tại PA13; driver Delta ASDA cài tại P1-00. Sai thông số này là nguyên nhân hàng đầu khiến motor chỉ quay một chiều hoặc đứng im dù đèn ngõ ra PLC vẫn nháy.
b. Điện áp analog ±10V
Driver đặt ở chế độ tốc độ hoặc mô-men, PLC xuất −10V đến +10V qua module analog để quy định tốc độ và chiều. Muốn định vị, PLC phải đọc xung encoder chia tần vào bộ đếm tốc độ cao và tự đóng vòng vị trí, nên độ chính xác phụ thuộc chu kỳ quét và dễ trôi điểm 0 do nhiễu. Cách này hợp với điều tốc, kéo căng vật liệu hơn là định vị. Nhiều CPU S7-1200 chỉ có ngõ ra analog 0–20 mA, phải thêm module ngõ ra áp ±10V.
c. Truyền thông Modbus RS485
PLC ghi vị trí đích, tốc độ, gia tốc vào thanh ghi của driver (driver chạy định vị nội bộ) rồi đọc lại vị trí thực và mã lỗi. Chỉ cần một cặp dây cho nhiều trục, nhưng mỗi lần đọc ghi mất vài đến vài chục mili giây, không dùng được cho nội suy. Lệnh tương ứng: MODRD/MODWR trên Delta DVP, ADPRW trên Mitsubishi (FX3U có adapter Modbus hoặc cổng RS485 tích hợp của FX5U), khối Modbus Master với module CM 1241 trên S7-1200.
d. Mạng chuyển động thời gian thực
EtherCAT, PROFINET, CC-Link IE TSN, SSCNET III/H, MECHATROLINK truyền lệnh vị trí theo chu kỳ cố định và trả về vị trí encoder thật. Không còn giới hạn tần số xung, không mất xung do nhiễu, đọc được vị trí tuyệt đối và alarm qua một sợi cáp. Đổi lại, driver và PLC phải cùng hỗ trợ mạng đó: S7-1200 dùng PROFINET với driver PROFIdrive; FX5U thêm module FX5-40SSC-S/80SSC-S (SSCNET III/H) hoặc FX5-40SSC-G/80SSC-G (CC-Link IE TSN); EtherCAT thường đi với PLC Omron, Beckhoff, Inovance và nhiều driver chuẩn CiA 402.
| Phương thức | Số trục hợp lý | Đọc vị trí thực | Chi phí |
| Xung + hướng | 1–4 | Phải đấu thêm encoder chia tần | Thấp |
| Analog ±10V | 1–2 | Bắt buộc đọc encoder | Trung bình |
| Modbus RS485 | Nhiều, chạy rời rạc | Có, qua thanh ghi | Thấp |
| Mạng thời gian thực | Nhiều, đồng bộ, nội suy | Có, theo chu kỳ mạng | Cao hơn |
3. Chọn PLC phát xung điều khiển servo
Ngõ ra transistor, không dùng relay
Tiếp điểm relay đóng cắt cỡ vài chục mili giây và chỉ chịu vài trăm nghìn đến vài triệu lần đóng; motor chạy 2.000 xung/vòng thì vài phút đã vượt con số đó. Vì vậy phải dùng CPU transistor (MT ở Mitsubishi, DC/DC/DC ở Siemens, T ở Delta). S7-1200 loại relay có thể gắn signal board ngõ ra DC để lấy kênh phát xung.
Tần số xung tối đa theo dòng PLC
| PLC | Tần số tối đa | Số trục | Ghi chú |
| Mitsubishi FX3U, FX3UC | 100 kHz | 3 (Y000–Y002) | Open collector |
| FX3U + FX3U-2HSY-ADP | 200 kHz | 2 mỗi adapter | Ngõ ra vi sai |
| Mitsubishi FX3S, FX3G 14/24 điểm | 100 kHz | 2 | FX3G 40/60 điểm có 3 trục |
| Mitsubishi FX5U, FX5UC | 200 kHz | 4 | CPU transistor |
| Mitsubishi FX5UJ | 200 kHz | 3 | CPU transistor |
| Siemens S7-1200 1211C–1215C DC/DC/DC | 100 kHz | 4 bộ phát xung (1214C) | Ngõ ra Q0.0–Q0.3 |
| Siemens S7-1200 1217C | 1 MHz | 4 | Ngõ ra vi sai |
| Siemens signal board SB 1222 | 200 kHz | 4 ngõ ra | Bản 5V hoặc 24V |
| Delta DVP-SS2 | 10 kHz | 4 điểm | Hợp motor bước hơn servo |
| Delta DVP-SA2, DVP-SX2 | 100 kHz | 2 kênh nhanh | 2 kênh còn lại 10 kHz |
| Delta DVP-SV2, DVP-EH3 (40 điểm trở lên) | 200 kHz | 4 | Có nội suy |
Driver cũng có giới hạn riêng: Mitsubishi MR-JE nhận tối đa 4 Mpulse/s qua ngõ vi sai nhưng chỉ 200 kpulse/s qua ngõ open collector. Khi phát 100–200 kHz, ưu tiên ngõ vi sai nếu PLC hỗ trợ.
4. Đấu nối ngõ ra phát xung PLC với driver servo
Ngõ vào xung của driver là một opto cách ly, cần dòng khoảng 7–16 mA. Hình dưới là sơ đồ kết nối tổng thể của một driver servo dạng xung: giắc lệnh về PLC, giắc encoder về motor, nguồn L–N vào và ba pha U V W ra motor.

Ngõ ra NPN (sink)
Mitsubishi FX3U bản MT/ES và đa số PLC Nhật, Trung Quốc là ngõ ra NPN, kéo xuống 0V khi dẫn. Nối +24V vào chân dương ngõ vào xung của driver (hoặc chân dành riêng cho 24V), chân âm về ngõ ra Y0, COM của PLC về 0V. Dây hướng đấu tương tự.
Ngõ ra PNP (source)
CPU S7-1200 DC/DC/DC và Mitsubishi bản ESS cấp +24V ra khi dẫn. Nối ngõ ra Q0.0 vào chân dương ngõ vào xung, chân âm về 0V chung với nguồn PLC.
Ngõ ra vi sai (line driver)
Hai dây xoắn đôi mang hai tín hiệu ngược pha, driver đọc hiệu điện áp nên nhiễu chung bị triệt tiêu. Mitsubishi giới hạn dây xung open collector khoảng 2 m, dây vi sai tới khoảng 10 m.
Điện trở hạn dòng khi xung 24V vào driver 5V
Nhiều driver có ngõ vào xung thiết kế cho mức 5V; cấp thẳng 24V sẽ cháy LED opto. Phải mắc nối tiếp điện trở:
R ≈ (Vnguồn − Vled − Rtrong × I) / I
Với điện trở trong khoảng 270 Ω, LED sụt 1,5V, dòng 10 mA, nguồn 24V: R ≈ (24 − 1,5 − 2,7) / 0,01 ≈ 1.980 Ω, chọn 2 kΩ, 0,25W. Đây cũng là giá trị nhiều nhà sản xuất driver khuyến nghị: 1 kΩ cho 12V, 2 kΩ cho 24V, không cần điện trở với 5V. Mắc cho cả dây xung lẫn dây hướng, và luôn đối chiếu sơ đồ trong manual driver.
Chống nhiễu và mất xung
- Dùng cáp xoắn đôi có lưới chống nhiễu, nối lưới về đất một đầu. Dây drain không nối đất là nguyên nhân phổ biến gây mất xung ngẫu nhiên.
- Đi dây xung tách khỏi cáp U V W và cáp biến tần ít nhất 20–30 cm, cắt nhau thì cắt vuông góc.
- Ngõ ra open collector hoặc PNP ở tần số cao có sườn xuống chậm; một số hãng hướng dẫn mắc thêm điện trở tải vài trăm ohm, loại vài watt, song song với ngõ vào xung để giữ dạng sóng vuông.
Servo ON, Reset, dừng khẩn là tín hiệu 24V thông thường, ngõ ra nào cũng dùng được. Alarm, In-position, Ready từ driver về ngõ vào PLC; kiểm tra driver xuất NPN hay PNP để đấu COM ngõ vào cho đúng.
Video dưới đây ghi lại cách điều chỉnh bộ phát xung cấp lệnh cho motor servo 400 W, giúp hình dung tín hiệu xung và hướng đi vào driver giống như khi PLC phát xung.
5. Tính bánh răng điện tử và tốc độ tối đa theo tần số xung
Bánh răng điện tử là tỉ số driver nhân với mỗi xung lệnh để ra số xung encoder. Nhờ nó, PLC chỉ cần phát số xung theo đơn vị cơ khí dễ tính thay vì hàng trăm nghìn xung mỗi vòng.
Công thức
- Tỉ số bánh răng điện tử = Độ phân giải encoder / Số xung PLC mỗi vòng motor
- Tần số xung cần (Hz) = Số xung mỗi vòng × Tốc độ motor (vòng/phút) / 60
Ví dụ 1: vít me bước 10 mm, encoder 131.072 xung/vòng
Muốn mỗi xung là 0,001 mm thì cần 10.000 xung/vòng. Tỉ số = 131.072 / 10.000 = 8.192 / 625. Trên driver Mitsubishi nhập PA06 (CMX) = 8192, PA07 (CDV) = 625; nhiều dòng còn cho nhập thẳng số xung lệnh mỗi vòng tại PA05 sau khi chọn kiểu cài ở PA21. Driver Delta ASDA dùng P1-44 (tử số) và P1-45 (mẫu số).
Kiểm tra tốc độ: ở 3.000 vòng/phút cần 10.000 × 3.000 / 60 = 500 kHz. FX3U chỉ phát 100 kHz nên motor chỉ đạt 600 vòng/phút, tương đương 100 mm/s. Đây là lỗi thiết kế rất hay gặp: chọn độ phân giải quá mịn rồi thấy servo chạy chậm.
Ví dụ 2: hạ độ phân giải để đạt tốc độ định mức
Chọn 2.000 xung/vòng (0,005 mm mỗi xung). Ở 3.000 vòng/phút cần đúng 100 kHz, vừa giới hạn FX3U hay S7-1200. Tỉ số = 131.072 / 2.000 = 8.192 / 125. Với vít me cán thông thường, 0,005 mm/xung đã dư dùng.
Ví dụ 3: encoder 2.500 xung, có hộp số
Motor dùng encoder 2.500 xung/vòng được driver nhân 4 thành 10.000 xung/vòng. Muốn PLC phát 2.000 xung/vòng thì tỉ số = 10.000 / 2.000 = 5/1. Các model như motor servo 400W hay motor servo 750W có cả bản encoder 2.500 xung và bản tuyệt đối 17/23 bit (131.072 hoặc 8.388.608 xung/vòng). Nếu có hộp giảm tốc tỉ số i, quãng đường mỗi vòng motor bằng bước vít me chia i: hộp số 1:5 với vít me 10 mm cho 2 mm mỗi vòng, nên 2.000 xung/vòng đã đạt 0,001 mm/xung.
| Xung PLC mỗi vòng | mm mỗi xung (vít me 10 mm) | Tốc độ tối đa ở 100 kHz | Tốc độ tối đa ở 200 kHz |
| 1.000 | 0,010 | 6.000 vòng/phút | 12.000 vòng/phút |
| 2.000 | 0,005 | 3.000 vòng/phút | 6.000 vòng/phút |
| 4.000 | 0,0025 | 1.500 vòng/phút | 3.000 vòng/phút |
| 10.000 | 0,001 | 600 vòng/phút | 1.200 vòng/phút |
Tốc độ thực tế còn bị chặn bởi tốc độ định mức của motor: thường 3.000 vòng/phút với loại 400–750W và 2.500 hoặc 1.500 vòng/phút với các model lớn như motor servo 1.5kW. Sau khi cài, cho PLC phát đúng số xung của 10 vòng ở tốc độ thấp và đánh dấu trên trục để kiểm tra.
6. Lập trình điều khiển servo trên PLC Mitsubishi FX3U và FX5U
| Lệnh | Chức năng |
| PLSY | Phát số xung tần số cố định, không tăng giảm tốc |
| PLSV | Phát xung tốc độ thay đổi, có chân hướng (chạy JOG) |
| DRVI | Định vị tương đối (đi thêm N xung) |
| DRVA | Định vị tuyệt đối (đi tới tọa độ N), cần về gốc trước |
| ZRN | Về gốc theo cảm biến gần gốc, không tìm DOG |
| DSZR | Về gốc có tìm DOG và dùng tín hiệu pha Z |
| DVIT | Định vị ngắt: chạy đến khi có tín hiệu rồi đi thêm quãng định trước (FX3U/FX3UC) |
DRVI, DRVA trên FX3U
Lệnh có bốn toán hạng: số xung, tần số xung, ngõ ra phát xung, ngõ ra hướng. Bản 32 bit cho tần số 10–100.000 Hz. Ví dụ đi thêm 20.000 xung ở 50 kHz trên Y000, chân hướng Y003:
LD M10
DDRVI K20000 K50000 Y000 Y003
LD M8029
SET M11Số xung âm làm PLC đảo chân hướng. Với DDRVA, toán hạng đầu là tọa độ tuyệt đối.
Về gốc bằng DSZR
LD M20
DSZR X010 X000 Y000 Y003X010 là cảm biến gần gốc (DOG), X000 là tín hiệu pha Z lấy từ driver (phải thuộc X000–X007). Khi gặp DOG trục giảm về tốc độ bò, khi DOG tắt và gặp xung Z đầu tiên thì dừng, vị trí hiện tại được đặt về giá trị gốc.
Thanh ghi và cờ của Y000
- D8341, D8340: vị trí hiện tại 32 bit (số xung lệnh đã phát).
- D8345: tốc độ bò; D8346, D8347: tốc độ về gốc; D8348, D8349: thời gian tăng tốc, giảm tốc.
- M8340: Y000 đang phát xung; M8029: lệnh hoàn tất; M8329: kết thúc bất thường; M8343, M8344: giới hạn thuận, nghịch.
Mỗi ngõ ra chỉ được một lệnh định vị điều khiển tại một thời điểm; sau khi tắt điều kiện lệnh trước phải chờ M8340 tắt mới kích lệnh sau, nếu không lệnh sau bị bỏ qua.
FX5U, FX5UC, FX5UJ
Trên GX Works3, cấu hình nằm ở Module Parameter → High Speed I/O → Output Function → Positioning: kiểu xung (PULSE/SIGN hoặc CW/CCW), chân hướng, đơn vị (xung, µm, inch, độ), tốc độ tối đa, thời gian tăng giảm tốc, giới hạn mềm, thông số về gốc. Lệnh DRVI, DRVA, DSZR, PLSV giữ tên nhưng toán hạng cuối là số trục và cờ hoàn thành/lỗi thay cho chân xung, chân hướng. FX5 còn có bảng định vị cài trong tham số, gọi bằng lệnh TBL, tiện cho máy chạy chuỗi nhiều điểm dừng.
7. Điều khiển servo bằng PLC Siemens S7-1200 trong TIA Portal
S7-1200 dùng đối tượng công nghệ TO_PositioningAxis và các khối chuyển động chuẩn PLCopen thay cho lệnh phát xung kiểu ladder.
Cấu hình trục
1. Trong cấu hình CPU, bật Pulse generator, chọn dùng cho đối tượng công nghệ.
2. Thêm TO_PositioningAxis, chọn kết nối driver PTO (đối tượng này còn hỗ trợ driver analog và PROFIdrive).
3. Chọn kiểu tín hiệu: xung A + hướng B, đếm lên/đếm xuống (tương ứng CW/CCW) hoặc A/B lệch pha.
4. Mechanics: nhập số xung mỗi vòng motor (khớp bánh răng điện tử của driver, ví dụ 2.000) và quãng đường tải mỗi vòng (ví dụ 10 mm); từ đó mọi lệnh tính bằng mm.
5. Drive signals: gán ngõ ra Enable nối vào Servo ON, ngõ vào Ready nhận tín hiệu sẵn sàng của driver.
6. Khai báo công tắc hành trình phần cứng, giới hạn mềm, tốc độ tối đa, gia tốc, gia tốc dừng khẩn và thông số về gốc.
Các khối lệnh chính
| Khối | Chức năng |
| MC_Power | Bật/tắt trục, xuất Enable (Servo ON) |
| MC_Reset | Xác nhận lỗi trục |
| MC_Home | Về gốc hoặc gán tọa độ |
| MC_MoveJog | Chạy nhắp thuận/nghịch |
| MC_MoveAbsolute, MC_MoveRelative | Định vị tuyệt đối, tương đối |
| MC_MoveVelocity, MC_Halt | Chạy theo tốc độ, dừng có giảm tốc |
MC_Power có tham số StopMode: 0 dừng khẩn theo gia tốc dừng khẩn rồi tắt trục, 1 dừng ngay, 2 dừng khẩn có giới hạn độ giật. MC_Home có Mode 0 (gán vị trí hiện tại bằng Position), Mode 1 (cộng Position vào vị trí hiện tại), Mode 2 (về gốc thụ động, ghi nhận gốc khi lệnh khác di chuyển trục qua công tắc), Mode 3 (về gốc chủ động, trục tự tìm công tắc gốc); Mode 6, 7 hiệu chỉnh encoder tuyệt đối chỉ dùng với driver analog hoặc PROFIdrive.
MC_MoveAbsolute chỉ chạy khi trục đã bật bằng MC_Power và đã về gốc. Các khối kích bằng sườn lên Execute; Done báo xong, CommandAborted báo bị lệnh khác ghi đè, Error kèm ErrorID để tra nguyên nhân. Trình tự điển hình: gọi MC_Power mỗi chu kỳ → Status bật thì cho MC_Home Mode 3 → Done thì cho MC_MoveAbsolute → có lỗi thì dừng, xử lý, kích MC_Reset. Bảng Commissioning trong TIA Portal cho chạy JOG, về gốc ngay từ máy tính, nên dùng để kiểm tra chiều quay và bánh răng điện tử trước khi viết chương trình.
8. Lập trình phát xung trên PLC Delta DVP
PLC Delta DVP lập trình bằng ISPSoft hoặc WPLSoft, bộ lệnh định vị gần giống Mitsubishi: DRVI, DRVA (số xung, tần số, ngõ ra xung, ngõ ra hướng), ZRN (tốc độ về gốc, tốc độ bò, cảm biến gốc, ngõ ra xung), PLSV cho JOG và PLSY phát số xung cố định.
Chọn model phải nhìn tần số trước: DVP-SS2 chỉ 10 kHz, với 2.000 xung/vòng motor chỉ đạt 300 vòng/phút. DVP-SA2, DVP-SX2 có 2 kênh 100 kHz; DVP-SV2, DVP-EH3 có 4 trục 200 kHz.
Cách kết hợp hay gặp với driver Delta ASDA: lưu sẵn các điểm định vị trong driver (chế độ PR), PLC chỉ gửi Servo ON và chọn chỉ số điểm qua ngõ vào số; khi cần đổi tọa độ từ HMI thì ghi giá trị mới vào thanh ghi driver bằng MODWR qua RS485. Cách này không bị giới hạn tần số xung của PLC.
9. Servo ON, Alarm, Reset, In-position và trình tự vận hành
Phần lớn sự cố "PLC phát xung mà servo không chạy" nằm ở tín hiệu điều khiển chứ không ở xung. Trình tự đúng:
1. Cấp nguồn driver, chờ hết khởi động, không có Alarm, Ready bật.
2. PLC bật Servo ON; chờ 100–200 ms hoặc chờ Ready/Status rồi mới phát xung, xung phát sớm sẽ bị bỏ qua.
3. Về gốc nếu dùng định vị tuyệt đối.
4. Chạy định vị. Khi PLC phát xong, chờ thêm In-position (INP ở Mitsubishi, TPOS ở Delta) mới chuyển bước.
5. Khi có Alarm: dừng phát xung, tắt Servo ON, hiển thị lỗi. Chỉ kích Reset sau khi đã xử lý nguyên nhân; một số lỗi phải tắt nguồn mới xóa được.
Ở nhiều driver, ngõ ra Alarm dẫn khi bình thường và ngắt khi có lỗi; lập trình "Alarm tắt là lỗi" đồng thời phát hiện được đứt dây. Driver Mitsubishi dòng A có ngõ vào LSP, LSN: để hở thì driver coi như đang chạm giới hạn và khóa chiều tương ứng, motor không quay dù có Servo ON và có xung. Khi thử chưa có công tắc có thể cài thông số cho LSP/LSN tự bật, nhưng máy thật nên đấu công tắc hành trình thường đóng vào cả driver lẫn PLC. Yêu cầu về phanh trục đứng và cách xử lý từng nhóm alarm được trình bày trong bài lưu ý khi sử dụng động cơ servo.
Video ngắn dưới đây minh họa phần cài đặt driver servo trong một hệ tự động hóa.
10. Về gốc, công tắc hành trình và đọc vị trí phản hồi
Bố trí cảm biến về gốc
Trục định vị tuyệt đối cần giới hạn thuận, giới hạn nghịch và cảm biến gần gốc (DOG). Về gốc chính xác nhất là DOG kết hợp pha Z: vì xung Z chỉ có một lần mỗi vòng motor, độ lặp lại đạt mức một xung encoder, không phụ thuộc độ trễ cảm biến tiệm cận. Đặt DOG sao cho mép tắt không sát vị trí xung Z; nếu quá gần, lúc trục dừng ở xung Z này, lúc ở xung Z kế tiếp, lệch đúng một vòng motor. Dịch DOG khoảng nửa vòng motor là hết.
Encoder tuyệt đối có cần về gốc mỗi lần bật máy
Với điều khiển bằng xung, PLC không tự biết vị trí tuyệt đối sau khi mất điện. Muốn bỏ bước về gốc phải truyền dữ liệu tuyệt đối từ driver về PLC (giao thức riêng của hãng, Modbus hoặc mạng chuyển động); nếu không, vẫn phải về gốc sau mỗi lần cấp điện.
Đọc vị trí phản hồi thật
Thanh ghi vị trí của PLC khi phát xung chỉ là số xung đã phát, không phải vị trí motor; khi motor kẹt hoặc driver báo lỗi giữa chừng, hai giá trị khác nhau. Có ba cách đọc vị trí thật: nối ngõ ra xung encoder chia tần A/B của driver vào bộ đếm tốc độ cao của PLC (đặt tỉ lệ chia bằng số xung PLC mỗi vòng để cùng đơn vị), đọc thanh ghi vị trí của driver qua Modbus, hoặc dùng mạng chuyển động. So sánh vị trí lệnh với vị trí thật sau mỗi lần dừng giúp phát hiện sớm mất xung hay trượt khớp nối.
11. Lỗi thường gặp khi điều khiển servo bằng PLC
| Hiện tượng | Nguyên nhân hay gặp | Cách xử lý |
| Ngõ ra PLC nháy, motor không quay | Chưa Servo ON; driver không ở chế độ vị trí; LSP/LSN hở; thiếu nguồn cho ngõ vào xung | Xem màn hình driver có đếm xung lệnh không; chỉnh chế độ, đấu công tắc |
| Chỉ chạy một chiều | Kiểu xung PLC và driver không khớp; dây hướng hở | Đồng bộ kiểu xung; đo chân hướng khi đổi chiều |
| Sai quãng đường theo tỉ lệ cố định | Bánh răng điện tử sai, bỏ quên nhân 4 encoder | Tính lại, thử 10 vòng |
| Sai lệch tăng dần | Mất xung do nhiễu, vượt tần số ngõ open collector | Cáp chống nhiễu, ngõ vi sai, giảm tần số |
| Motor chậm hơn tính toán | Chạm giới hạn tần số PLC | Giảm số xung mỗi vòng hoặc đổi PLC |
| Lệnh định vị thứ hai không chạy | Kích khi lệnh trước chưa kết thúc | Chờ cờ phát xung tắt |
| Cháy ngõ vào xung driver | Cấp 24V vào ngõ 5V không điện trở | Thêm 2 kΩ hoặc dùng chân 24V |
| Báo lệch vị trí khi tăng tốc | Thời gian tăng tốc quá ngắn so với quán tính tải | Tăng thời gian tăng tốc, chạy auto-tuning |
12. Câu hỏi thường gặp về điều khiển động cơ servo bằng PLC
PLC ngõ ra relay có điều khiển được động cơ servo không?
Không phát xung được. Relay đóng cắt quá chậm và mòn tiếp điểm rất nhanh. PLC relay chỉ dùng cho Servo ON, Reset hoặc khi ra lệnh qua Modbus, analog, mạng.
PLC ngõ ra NPN có dùng được với driver servo không?
Có. Ngõ vào xung của driver là opto cách ly, đấu được với cả NPN và PNP, chỉ khác chiều nối nguồn. Điều cần kiểm tra là mức điện áp ngõ vào 5V hay 24V.
Xung 24V từ PLC vào driver 5V cần điện trở bao nhiêu?
Thường 2 kΩ, 0,25W, nối tiếp ở cả dây xung và dây hướng, giữ dòng opto khoảng 10 mA. Driver có chân riêng cho 24V thì không cần điện trở ngoài.
PLC Mitsubishi FX3U phát xung tối đa bao nhiêu kHz?
100 kHz trên Y000, Y001, Y002 của CPU transistor; thêm FX3U-2HSY-ADP để có 200 kHz ngõ vi sai. FX5U phát 200 kHz ngay trên CPU.
S7-1200 điều khiển được bao nhiêu trục servo bằng xung?
CPU 1214C có 4 bộ phát xung, tức tối đa 4 trục xung + hướng, 100 kHz trên ngõ tích hợp, 200 kHz với signal board, 1 MHz với CPU 1217C. Nhiều trục hơn nên dùng driver PROFINET.
Vì sao servo chạy không đủ quãng đường so với lệnh?
Thiếu theo tỉ lệ cố định là do bánh răng điện tử hoặc số xung mỗi vòng khai báo sai. Sai lệch tăng dần theo thời gian là mất xung do nhiễu hoặc vượt tần số ngõ vào. Chạy thử đúng 10 vòng ở tốc độ thấp để phân biệt.
PLC báo phát xung xong, motor đã tới vị trí chưa?
Chưa chắc. Cờ hoàn thành của PLC chỉ báo đã gửi hết xung; motor còn trễ một chút do sai lệch vòng vị trí. Hãy chờ thêm tín hiệu In-position của driver.
Nên điều khiển servo bằng xung hay bằng truyền thông?
Một đến bốn trục chạy độc lập thì phát xung là đủ và rẻ. Nhiều trục, cần nội suy, cần đọc vị trí tuyệt đối và mã lỗi, hoặc dây dài trong môi trường nhiễu thì nên dùng mạng chuyển động.
Một ngõ phát xung có điều khiển hai servo cùng lúc được không?
Được, nếu hai trục chạy y hệt, cài cùng bánh răng điện tử và tổng dòng hai ngõ vào opto nằm trong khả năng ngõ ra PLC. PLC sẽ không biết trục nào bị kẹt, nên trục đôi kéo chung khung cần thêm giám sát vị trí.
Điều khiển tốc độ servo bằng PLC dùng lệnh gì?
PLSV trên Mitsubishi, Delta; MC_MoveVelocity hoặc MC_MoveJog trên S7-1200. Nếu chỉ cần điều tốc không định vị, có thể đặt driver ở chế độ tốc độ và cấp lệnh analog.
PLC có điều khiển mô-men servo được không?
Có, khi driver ở chế độ mô-men và nhận lệnh analog ±10V hoặc lệnh mô-men qua mạng. Phát xung không điều khiển mô-men được, chỉ có thể chọn mức giới hạn mô-men nếu driver hỗ trợ.
Có đọc được mã lỗi driver servo lên PLC và HMI không?
Có, qua Modbus hoặc mạng chuyển động. Nếu chỉ dùng xung, PLC chỉ nhận một bit Alarm chung.
Vì sao S7-1200 báo lỗi khi chạy MC_MoveAbsolute?
Thường do trục chưa bật bằng MC_Power hoặc chưa về gốc. Khi thử nghiệm có thể dùng MC_Home Mode 0 để gán vị trí hiện tại làm gốc, máy thật nên dùng Mode 3.
Chọn bao nhiêu xung mỗi vòng motor là hợp lý?
Chọn sao cho mỗi xung nhỏ hơn khoảng 1/5 đến 1/10 dung sai cần đạt và tần số ở tốc độ định mức không vượt giới hạn PLC. Với vít me 10 mm và PLC 100 kHz, 2.000 xung/vòng là điểm cân bằng tốt.
13. Kết luận
Điều khiển động cơ servo bằng PLC chạy ổn định khi ba phần khớp nhau: phần cứng (ngõ ra transistor, đúng NPN/PNP, đúng mức 5V/24V, cáp chống nhiễu), thông số (kiểu xung và bánh răng điện tử thống nhất, tần số không vượt giới hạn) và trình tự chương trình (Servo ON, kiểm tra Alarm, về gốc, định vị, chờ In-position). Máy ít trục dùng phát xung trên FX3U, FX5U, S7-1200 hay Delta DVP là đơn giản và tiết kiệm; khi số trục tăng hoặc cần vị trí thật, chuyển sang Modbus hoặc mạng chuyển động sẽ bớt nhiều rắc rối về mất xung. Người mới cần cái nhìn tổng quát trước có thể xem bài cách điều khiển động cơ servo.






