PWM và PTO trên S7-1200: điều khiển tốc độ động cơ, xung tốc độ cao
PLC17 tháng 7, 2026· 14 phút đọc · 20 lượt xem

PWM và PTO trên S7-1200: điều khiển tốc độ động cơ, xung tốc độ cao

Hướng dẫn PWM và PTO trên S7-1200: điều khiển tốc độ động cơ, cấu hình xung tốc độ cao cho motion control

Khi cần điều khiển tốc độ động cơ, vị trí van, hoặc chuyển động của động cơ bước/servo, S7-1200 cung cấp sẵn hai bộ phát xung tốc độ cao tích hợp: PWM (Pulse Width Modulation) và PTO (Pulse Train Output). Dù cùng dựa trên nguyên lý phát xung, hai chức năng này phục vụ hai mục đích hoàn toàn khác nhau. Bài viết này sẽ giúp bạn hiểu rõ và cấu hình đúng cho từng ứng dụng.

1. PWM và PTO khác nhau ở điểm nào?

Cả hai đều dùng chung một bộ phát xung vật lý (pulse generator) trên CPU, nhưng bạn chỉ được gán mỗi bộ phát xung cho một trong hai chức năng — không thể dùng đồng thời cả PWM lẫn PTO trên cùng một kênh.

PWM tạo ra tín hiệu xung với chu kỳ cố định nhưng độ rộng xung (pulse width/duty cycle) có thể thay đổi liên tục — về bản chất, đây là một dạng ngõ ra số nhưng hoạt động tương tự ngõ ra analog. Độ rộng xung có thể biến thiên từ 0 (tắt hoàn toàn) đến full scale (bật hoàn toàn), nhờ đó PWM thường dùng để điều khiển tốc độ động cơ từ dừng đến tối đa, hoặc điều khiển vị trí van từ đóng đến mở hoàn toàn.

PTO tạo ra một chuỗi xung vuông với tần số có thể thay đổi, dùng chuyên biệt cho các lệnh motion control (điều khiển chuyển động) — điều khiển động cơ bước (stepper) hoặc servo motor có giao tiếp dạng xung. Mỗi bộ phát PTO gồm một ngõ ra xung (pulse) và một ngõ ra điều khiển chiều (direction), gắn cố định với nhau.

2. Số lượng và giới hạn phần cứng

Mỗi CPU S7-1200 có tối đa 4 bộ phát xung (PTO0/PWM0, PTO1/PWM1, PTO2/PWM2, PTO3/PWM3 — với các CPU đời V3.0; các CPU đời V1.0-V2.2 chỉ có 2 bộ), mỗi bộ có thể dùng ngõ ra tích hợp trên CPU hoặc ngõ ra trên Signal Board (SB) mở rộng.

Giới hạn tần số tối đa theo từng loại ngõ ra:

Nguồn ngõ ra

Tần số tối đa

Ngõ ra tích hợp CPU (onboard)

100 kHz

Signal Board chuẩn

20 kHz

Signal Board tốc độ cao (high-speed)

200 kHz (với lệnh MC V2), hoặc 100 kHz (với lệnh MC V1)

Cảnh báo quan trọng: TIA Portal không cảnh báo nếu bạn cấu hình tốc độ vượt quá giới hạn phần cứng — điều này hoàn toàn có thể gây lỗi vận hành nếu không kiểm tra kỹ, nên luôn tự đối chiếu tần số cấu hình với giới hạn thực tế của phần cứng đang dùng.

Lưu ý: ngõ ra dạng relay tích hợp sẵn không thể dùng làm ngõ ra xung để điều khiển động cơ. Bảng số lượng trục điều khiển được tối đa còn phụ thuộc vào loại CPU và loại ngõ ra (relay hay DC) — ví dụ CPU 1215C loại DC/DC/DC hỗ trợ tối đa 4 trục, trong khi loại AC/DC/RLY cần có thêm Signal Board mới điều khiển được.

3. Địa chỉ ngõ ra mặc định — và điều cần lưu ý

Khi một ngõ ra được gán làm bộ phát xung (PWM hoặc PTO), địa chỉ Q tương ứng (ví dụ Q0.0, Q0.1, Q4.0, Q4.1) sẽ bị loại khỏi vùng nhớ Q thông thường — chương trình của bạn không còn ghi trực tiếp vào các địa chỉ này được nữa. Nếu chương trình vẫn cố ghi giá trị vào ngõ ra đó, CPU sẽ bỏ qua, không ghi ra ngõ ra vật lý.

Bảng gán mặc định (có thể thay đổi khi cấu hình):

Bộ phát xung

Ngõ ra tích hợp

Ngõ ra trên SB

PTO0 / PWM0

Q0.0 (xung), Q0.1 (chiều — chỉ PTO)

Q4.0, Q4.1

PTO1 / PWM1

Q0.2 (xung), Q0.3 (chiều — chỉ PTO)

Q4.2, Q4.3

Lưu ý: PWM chỉ dùng 1 ngõ ra, còn PTO có thể dùng 2 ngõ ra (xung + chiều). Nếu một ngõ ra không cần dùng cho chức năng xung, bạn vẫn có thể dùng cho mục đích khác trong chương trình.

Ngoài ra, các điểm I/O đã gán cho PWM/PTO không thể ép giá trị (Force) qua công cụ Watch table — đây cũng là điểm khác biệt cần lưu ý khi debug.

4. Cấu hình một kênh PWM

Quy trình cấu hình PWM thực hiện trong Device Configuration:

  1. Chọn CPU → mở mục "Pulse Generator (PTO/PWM)" → chọn PWM1 hoặc PWM2.

  2. Tích chọn Enable để kích hoạt bộ phát xung. Sau khi kích hoạt, một tên mặc định (duy nhất) được gán — bạn có thể đổi tên, tên này sẽ trở thành tag trong bảng "constant" và được dùng làm tham số PWM của lệnh CTRL_PWM.

  3. Chọn "Pulse generator used as" → chọn PWM.

  4. Chọn nguồn ngõ ra: onboard CPU hay Signal Board.

  5. Chọn Time base: mili-giây hoặc micro-giây.

  6. Chọn định dạng độ rộng xung: phần trăm (0-100), phần nghìn (0-1000), phần vạn (0-10000), hoặc định dạng analog chuẩn S7 (0-27648).

  7. Nhập Cycle time (chu kỳ) — chỉ thay đổi được trong Device configuration, không đổi được lúc runtime.

  8. Nhập Initial pulse width (độ rộng xung ban đầu) — giá trị này có thể thay đổi lúc runtime.

  9. Nhập địa chỉ Q word để ghi giá trị độ rộng xung — mặc định là QW1000 cho PWM1, QW1002 cho PWM2.

5. Điều khiển PWM bằng lệnh CTRL_PWM trong chương trình

Sau khi cấu hình, bạn dùng lệnh CTRL_PWM để bật/tắt bộ phát xung trong chương trình. Các tham số chính:

Tham số

Mô tả

PWM

Tên bộ phát xung (chọn từ tag đã cấu hình)

ENABLE

1 = bắt đầu phát xung; 0 = dừng phát xung

BUSY

Luôn trả về FALSE, vì lệnh xử lý ngay khi thực thi

STATUS

Mã lỗi thực thi (STATUS = 0 nghĩa là không lỗi)

Cách thay đổi độ rộng xung lúc runtime: không dùng trực tiếp tham số của CTRL_PWM, mà ghi giá trị mới vào địa chỉ Q word đã cấu hình (ví dụ QW1000) bằng các lệnh như Move, Convert, Math, hoặc thậm chí lấy trực tiếp từ ngõ ra của khối PID. Giá trị này phải nằm trong dải hợp lệ theo định dạng đã chọn (phần trăm/phần nghìn/phần vạn/analog).

Lưu ý: giá trị độ rộng xung sẽ tự động được khởi tạo lại về Initial pulse width mỗi khi CPU chuyển từ STOP sang RUN — nên nếu ứng dụng cần một giá trị khởi động cụ thể, hãy đặt đúng giá trị này trong cấu hình thay vì chỉ dựa vào logic chương trình.

6. Cấu hình PTO cho Motion Control

PTO không dùng trực tiếp qua một lệnh đơn giản như CTRL_PWM, mà thông qua Technological Object "Axis" và các lệnh Motion Control (MC_Power, MC_MoveAbsolute, MC_MoveRelative...). Quy trình cơ bản:

  1. Thêm Technological Object: trong project tree, mở "Technological Objects" → "Add new object" → chọn biểu tượng "Axis".

  2. Chọn PTO cho trục: trong phần "Basic parameters" của Axis, chọn bộ PTO muốn dùng (nếu PTO chưa được cấu hình trước đó trong CPU Properties, hệ thống sẽ tự cấu hình dùng ngõ ra tích hợp).

  3. Nếu dùng Signal Board: vào Device configuration → "Pulse generators (PTO/PWM)" → chọn nguồn ngõ ra là Signal Board (chỉ có Pulse_1 và Pulse_3 khả dụng trên SB).

  4. Cấu hình các thông số cơ bản và nâng cao khác của Axis: tỷ số truyền động cơ khí, giới hạn vị trí, các thông số động học (gia tốc, giảm tốc), và homing (tìm điểm gốc).

  5. Lập trình: chèn lệnh MC_Power vào code block, gán Axis tương ứng vào tham số Axis, đặt Enable = TRUE để cho phép các lệnh chuyển động khác hoạt động. Sau đó thêm các lệnh chuyển động khác (MC_MoveAbsolute, MC_MoveRelative, MC_Halt...) để tạo ra chuyển động mong muốn.

Lưu ý bắt buộc: mỗi trục (Axis) chỉ được có duy nhất một lệnh MC_Power trong toàn bộ chương trình.

Liên kết cố định giữa PTO và HSC

Một điểm kỹ thuật quan trọng: PTO cần dùng chức năng nội bộ của bộ đếm tốc độ cao (HSC) để hoạt động — nghĩa là khi PTO đang chạy, bộ đếm HSC tương ứng không thể dùng cho mục đích nào khác. Với các CPU đời V1.0-V2.2, việc gán PTO với HSC là cố định: PTO1 luôn gắn với HSC1, PTO2 luôn gắn với HSC2. Với CPU đời V3.0, ràng buộc này không còn. Ngoài ra, bạn không thể giám sát giá trị đếm hiện tại trong khi PTO đang phát xung.

Cách CPU xử lý các "slice" chuyển động

CPU tính toán các tác vụ chuyển động theo từng "slice" (lát cắt) 10 ms. Khi một slice đang thực thi, slice tiếp theo đã nằm sẵn trong hàng đợi. Nếu bạn ngắt một tác vụ chuyển động đang chạy trên một trục bằng cách ra lệnh chuyển động mới, tác vụ mới có thể trễ tối đa 20 ms (phần còn lại của slice hiện tại cộng với slice đang chờ) mới thực sự bắt đầu thực thi. Đây là điểm cần tính đến nếu ứng dụng của bạn yêu cầu phản ứng cực nhanh khi đổi lệnh chuyển động.

7. Một số lỗi và lưu ý thường gặp

Mã lỗi

Ý nghĩa

80A1

Định danh PWM không hợp lệ

8022 / 8023

Vùng nhớ input/output quá nhỏ

8024 / 8025

Vùng nhớ input/output không hợp lệ

8030

Vùng nhớ ngõ ra là DB chỉ đọc

803A

DB không tồn tại

Ngoài ra:

  • Không thể dùng đồng thời PWM và PTO trên cùng một bộ phát xung — cần xác định rõ ứng dụng cần loại nào trước khi cấu hình.

  • Kiểm tra kỹ tần số cấu hình so với giới hạn phần cứng thực tế, vì phần mềm không tự cảnh báo.

  • Địa chỉ Q đã gán cho PWM/PTO sẽ không dùng được cho mục đích khác trong chương trình — cần lên kế hoạch phân bổ I/O từ đầu dự án.

8. Khi nào dùng PWM, khi nào dùng PTO?

  • Dùng PWM khi: cần điều khiển tốc độ động cơ DC đơn giản, điều khiển độ sáng đèn, hoặc điều khiển vị trí van tuyến tính qua tín hiệu dạng bật/tắt theo chu kỳ — nói chung là bất kỳ ứng dụng nào cần một "ngõ ra analog giả lập" mà không cần định vị chính xác theo số xung.

  • Dùng PTO khi: cần điều khiển chính xác vị trí/tốc độ của động cơ bước hoặc servo qua giao diện xung, đặc biệt trong các ứng dụng chuyển động (motion control) như băng tải định vị, trục X-Y, hoặc máy cắt CNC đơn giản.

Kết luận

PWM và PTO là hai công cụ mạnh mẽ giúp S7-1200 xử lý các bài toán điều khiển tốc độ và chuyển động chính xác mà không cần thêm phần cứng chuyên dụng. Điểm mấu chốt khi triển khai là xác định đúng nhu cầu ứng dụng ngay từ đầu (điều khiển tương tự dạng PWM hay chuyển động chính xác dạng PTO), tính toán kỹ giới hạn tần số phần cứng, và lên kế hoạch phân bổ địa chỉ I/O hợp lý trước khi bắt tay cấu hình trong TIA Portal.

⚡
Chưa biết chọn UPS công suất bao nhiêu?
Nhập danh sách thiết bị, công cụ sẽ tính tự động và gợi ý model phù hợp.
Tính công suất miễn phí

Cần tư vấn giải pháp UPS?

UPSsmart hỗ trợ tư vấn miễn phí, không ràng buộc.