Điều khiển động cơ bước bằng S7-200 và S7-200 SMART: phát xung PTO, lệnh PLS, Wizard và đấu driver
Điều khiển động cơ bước bằng S7-200 là dùng ngõ ra tốc độ cao Q0.0, Q0.1 của PLC Siemens S7-200 (hoặc Q0.0, Q0.1, Q0.3 của S7-200 SMART) phát chuỗi xung vào chân PUL của driver bước, kèm một ngõ ra khác cấp tín hiệu chiều quay vào chân DIR. Số xung quyết định góc quay, tần số xung quyết định tốc độ. Cách làm này hợp với các máy định vị một đến ba trục như bàn xoay chia độ, cơ cấu cấp phôi, máy cắt theo chiều dài, máy dán nhãn, nơi đã có sẵn PLC S7-200 đang điều khiển phần còn lại của máy.
Điều kiện tiên quyết là CPU phải có ngõ ra transistor (DC/DC/DC với S7-200 cổ, mã ST với S7-200 SMART). Bản ngõ ra relay không phát xung được. Sau đó có hai cách lập trình: dùng trực tiếp lệnh PLS với các ô nhớ đặc biệt SM, hoặc dùng trình hướng dẫn điều khiển vị trí (Position Control Wizard trên STEP 7-Micro/WIN, Motion Wizard trên Micro/WIN SMART) để phần mềm sinh sẵn các khối lệnh có tăng tốc, giảm tốc, về gốc. Chọn đúng loại động cơ bước và driver cũng quan trọng không kém chương trình.
Nội dung
- 1. S7-200 cổ và S7-200 SMART: dòng nào phát xung, tần số bao nhiêu
- 2. Đấu dây ngõ ra S7-200 tới driver động cơ bước
- 3. Cách 1: điều khiển động cơ bước bằng S7-200 với lệnh PLS
- 4. Cách 2: Position Control Wizard trên S7-200 cổ
- 5. Cách 3: Motion Wizard và lệnh AXISx_ trên S7-200 SMART
- 6. Tính xung, tốc độ và chọn motor cho đúng khả năng PLC
- 7. Lỗi thường gặp khi điều khiển động cơ bước bằng S7-200
- 8. Khi nào nên nâng cấp từ S7-200 lên S7-1200
- 9. Câu hỏi thường gặp về điều khiển động cơ bước bằng S7-200
1. S7-200 cổ và S7-200 SMART: dòng nào phát xung, tần số bao nhiêu
Trên thị trường hiện có hai họ PLC mang tên S7-200 mà nhiều người hay nhầm. S7-200 "cổ" (CPU 221, 222, 224, 224XP, 226, kể cả bản S7-200 CN) lập trình bằng STEP 7-Micro/WIN, đã ngừng sản xuất nhưng vẫn chạy rất nhiều trong máy cũ. S7-200 SMART (CPU SR/ST20, 30, 40, 60 và dòng kinh tế CR) là thế hệ thay thế, lập trình bằng STEP 7-Micro/WIN SMART, có cổng Ethernet và phát xung nhanh hơn hẳn.
Bảng khả năng phát xung của các CPU thường gặp
| CPU | Ngõ ra phát xung | Tần số tối đa | Ghi chú khi điều khiển động cơ bước |
| CPU 222, 224, 226 bản DC/DC/DC | Q0.0, Q0.1 | 20 kHz | Hai trục, đủ cho motor chạy chậm hoặc vi bước thấp |
| CPU 224XP bản DC/DC/DC | Q0.0, Q0.1 | 100 kHz | Ngõ ra kiểu source (PNP) |
| CPU 224XPsi | Q0.0, Q0.1 | 100 kHz | Ngõ ra kiểu sink (NPN), đấu driver theo kiểu chung anode |
| Mọi CPU S7-200 bản AC/DC/RLY | Không có | – | Ngõ ra relay, không phát xung được |
| S7-200 SMART ST20 | Q0.0, Q0.1 | 100 kHz | Hai trục |
| S7-200 SMART ST30, ST40, ST60 | Q0.0, Q0.1, Q0.3 | 100 kHz | Ba trục, có nội suy tuyến tính trong Motion Wizard; ST60 firmware V2.8 trở lên tới 4 trục |
| S7-200 SMART SR (relay), CR (kinh tế) | Không dùng cho phát xung | – | Muốn phát xung phải đổi sang mã ST |
Chữ cái trên mã giúp nhận biết nhanh. Với S7-200 cổ, đọc ba nhóm "nguồn/ngõ vào/ngõ ra": DC/DC/DC là nguồn 24 VDC, ngõ ra transistor; AC/DC/RLY là nguồn 220 VAC, ngõ ra relay. Với S7-200 SMART, chữ T trong ST là transistor, chữ R trong SR là relay.

- Sơ đồ trên là CPU 224 bản AC/DC/RLY: nguồn 220 VAC vào cọc L, N; các ngõ ra Q0, Q1 chia nhóm theo chân chung L1, L2, L3 và chỉ dùng đóng cắt cuộn contactor, đèn, van.
- Muốn phát xung cho driver động cơ bước, phải dùng bản DC/DC/DC: nguồn 24 VDC vào cọc L+, M và nhóm ngõ ra có chân 1L+, 1M.
- Dùng bản relay mà cố "bật tắt nhanh" Q0.0 bằng timer chỉ được vài xung mỗi giây và làm tiếp điểm relay mòn rất nhanh.
Vì sao 20 kHz lại là giới hạn quan trọng
Với S7-200 cổ, 20 kHz là con số quyết định cách chọn vi bước trên driver. Một động cơ bước 2 pha 1,8° cần 200 xung mỗi vòng ở chế độ full step, 1.600 xung ở 1/8 và 3.200 xung ở 1/16. Tốc độ tối đa của trục motor tính bằng công thức: vòng/phút = tần số xung × 60 ÷ số xung mỗi vòng.
| Số xung/vòng đặt trên driver | Tốc độ tối đa với 20 kHz (S7-200 cổ) | Tốc độ tối đa với 100 kHz (CPU 224XP, SMART) |
| 400 (1/2 bước) | 3.000 vòng/phút | Vượt khả năng motor |
| 1.600 (1/8 bước) | 750 vòng/phút | 3.750 vòng/phút (lý thuyết) |
| 3.200 (1/16 bước) | 375 vòng/phút | 1.875 vòng/phút |
| 10.000 | 120 vòng/phút | 600 vòng/phút |
Bảng cho thấy với S7-200 cổ, đặt driver 1.600–3.200 xung/vòng là vùng hợp lý: motor vẫn chạy êm mà PLC đủ xung cho tốc độ vài trăm vòng/phút. Đặt 10.000 xung/vòng như thói quen dùng với bộ điều khiển chuyên dụng sẽ khiến máy không bao giờ chạy nhanh hơn 120 vòng/phút, dù motor và driver còn dư sức.
2. Đấu dây ngõ ra S7-200 tới driver động cơ bước
Ngõ ra transistor của S7-200 bản DC/DC/DC và S7-200 SMART bản ST là kiểu source (PNP): khi ngõ ra bật, chân Q xuất ra +24 V so với chân 1M. Driver động cơ bước phổ biến (TB6600, DM542, DM556, DM860, driver 3 pha) có ngõ vào PUL, DIR, ENA cách ly quang, mỗi tín hiệu có cặp chân + và −. Ghép ngõ ra source với driver theo kiểu chung cathode: các chân âm nối về 0 V của PLC, các chân dương nhận tín hiệu từ ngõ ra.
Bảng đấu chuẩn cho một trục (PLC ngõ ra source 24 V)
| Chân PLC | Nối tới chân driver | Ghi chú |
| Q0.0 (xung trục 1) | PUL+ (qua điện trở nếu driver chỉ nhận 5 V) | Không dùng Q0.0 cho việc khác trong chương trình |
| Ngõ ra chiều (Q0.2 hoặc ngõ do Wizard gán) | DIR+ (qua điện trở nếu cần) | Với SMART, Wizard gán trục 0 dùng Q0.0 xung, Q0.2 chiều |
| Ngõ ra bất kỳ (tùy chọn) | ENA+ | Cho phép ngắt dòng motor khi dừng lâu hoặc khi có lỗi |
| 1M (0 V nhóm ngõ ra) | PUL−, DIR−, ENA− | Chung 0 V với nguồn 24 V cấp cho PLC |
| 1L+ | +24 V | Nguồn cấp cho nhóm ngõ ra transistor, thiếu chân này ngõ ra không có điện |
Driver đời mới thường ghi rõ mức tín hiệu "5–24 V" thì nối thẳng. Driver chỉ ghi 5 V (phần lớn module TB6600 phổ thông, DM542 đời cũ) phải thêm điện trở nối tiếp khoảng 2–2,2 kΩ ở mỗi ngõ vào; cách tính và bảng điện trở đã có ở bài mạch điều khiển động cơ bước TB6600. Nguyên tắc đấu NPN/PNP chung cho các hãng PLC khác xem tại bài điều khiển động cơ bước bằng PLC.
Những chi tiết hay bị bỏ sót khi đấu
- Nối chung 0 V: chân 1M của nhóm ngõ ra phải chung với âm của các chân PUL−, DIR−. Dùng hai nguồn 24 V riêng mà không nối âm chung thì driver không nhận xung.
- Tải quá nhẹ làm sườn xung xấu: ngõ vào opto của driver chỉ lấy khoảng 10 mA, trong khi ngõ ra transistor được thiết kế cho tải hàng trăm mA. Khi chạy tần số cao mà driver đếm thiếu xung, mắc thêm một điện trở khoảng 1 kΩ, 1 W từ Q0.0 xuống 1M để ngõ ra tắt dứt khoát hơn.
- CPU 224XPsi ngõ ra sink thì đảo lại: PUL+, DIR+ nối +24 V (qua điện trở nếu cần), PUL−, DIR− nối ngõ ra Q0.0, Q0.x.
Ngõ vào cần dành sẵn cho trục
Ngoài ngõ ra, mỗi trục nên có ít nhất một cảm biến gốc (RPS – reference point switch) và hai công tắc hành trình hai đầu (LMT+, LMT−). Ở S7-200 SMART, Motion Wizard cho phép chọn các ngõ vào này và tự xử lý dừng khi chạm hành trình. Ở S7-200 cổ dùng lệnh PLS, việc dừng khi chạm công tắc phải tự viết bằng ngắt hoặc logic chương trình, nên cảm biến gốc nên đưa vào ngõ vào có ngắt cạnh (I0.0–I0.3) để phản ứng nhanh hơn chu kỳ quét.
3. Cách 1: điều khiển động cơ bước bằng S7-200 với lệnh PLS
Lệnh PLS là cách trực tiếp và nhẹ nhất. Người lập trình nạp tần số (hoặc chu kỳ), số xung và byte điều khiển vào các ô nhớ đặc biệt SM, rồi gọi PLS với số kênh 0 (Q0.0) hoặc 1 (Q0.1). PLC tự phát đúng số xung ở chế độ PTO (pulse train output) với độ rộng xung 50 %, sau đó dừng và báo xong.
Ô nhớ PTO trên S7-200 cổ
| Chức năng | Kênh Q0.0 | Kênh Q0.1 | Ý nghĩa |
| Byte trạng thái | SMB66 | SMB76 | Bit SM66.7 = 1 khi PTO đang rảnh (đã phát xong) |
| Byte điều khiển | SMB67 | SMB77 | Bật PTO, chọn đơn vị thời gian, đơn đoạn hay đa đoạn |
| Chu kỳ xung | SMW68 | SMW78 | 10–65.535 µs (hoặc ms), chu kỳ càng nhỏ thì tần số càng cao |
| Số xung | SMD72 | SMD82 | Từ 1 đến khoảng 4,29 tỉ xung |
| Bảng profile đa đoạn | SMW168 | SMW178 | Địa chỉ bảng tăng tốc/giảm tốc trong vùng V |
Byte điều khiển hay dùng nhất là 16#85: bật PTO, chế độ PTO đơn đoạn, đơn vị 1 µs, cho phép cập nhật số xung và chu kỳ. Ví dụ phát 3.200 xung ở 5 kHz (chu kỳ 200 µs) trên Q0.0, tức motor quay đúng 1 vòng ở 1/16 bước với tốc độ khoảng 94 vòng/phút.
Trình tự lệnh cho một lần chạy (viết dạng STL)
| Bước | Lệnh | Tác dụng |
| 1 | R Q0.0, 1 | Đưa thanh ghi ảnh Q0.0 về 0 trước khi giao cho PTO |
| 2 | = Q0.2 (hoặc S/R) | Đặt chiều quay, làm trước khi phát xung ít nhất một chu kỳ quét |
| 3 | MOVB 16#85, SMB67 | Nạp byte điều khiển |
| 4 | MOVW +200, SMW68 | Chu kỳ 200 µs, tương đương 5 kHz |
| 5 | MOVD +3200, SMD72 | Số xung cần phát |
| 6 | PLS 0 | Bắt đầu phát trên Q0.0 |
| 7 | Kiểm tra SM66.7 hoặc dùng ngắt sự kiện 19 | Biết lúc phát xong để chuyển bước tiếp theo |
Điểm cần nhớ khi dùng PLS
- Chu kỳ nên là số chẵn đơn vị thời gian; chu kỳ lẻ làm độ rộng xung lệch khỏi 50 %.
- Lệnh PLS đơn đoạn chạy ngay ở tần số đặt, không có tăng tốc. Motor có tải quán tính lớn khởi động thẳng ở 5–10 kHz sẽ trượt bước; tần số khởi động an toàn thường chỉ vài trăm đến 1–2 kHz tùy tải.
- Muốn có tăng tốc, giảm tốc, dùng PTO đa đoạn: mỗi đoạn trong bảng profile gồm chu kỳ đầu, độ tăng chu kỳ mỗi xung và số xung của đoạn. Ba đoạn (tăng tốc – chạy đều – giảm tốc) là đủ cho đa số máy.
Lệnh PLS trên S7-200 SMART khác gì
S7-200 SMART vẫn có lệnh PLS cho Q0.0, Q0.1 và thêm Q0.3 (byte điều khiển SMB567), nhưng có ba thay đổi quan trọng khi chuyển chương trình từ máy cũ:
- SMW68 trên SMART chứa tần số tính bằng Hz (1–65.535 Hz cho PTO đơn đoạn), không còn là chu kỳ. Muốn 5 kHz thì nạp 5000 chứ không nạp 200.
- Bit 6 của byte điều khiển bị đảo nghĩa: trên S7-200 cổ, bit 6 = 0 là PTO; trên SMART, bit 6 = 1 mới là PTO. Vì vậy 16#85 của máy cũ phải sửa thành 16#C5 trên SMART.
- PTO đa đoạn trên SMART lên tới 100 kHz, còn PTO đơn đoạn giới hạn ở 65.535 Hz do SMW68 chỉ là số 16 bit.
Nhiều máy sau khi "chuyển đổi PLC" chạy sai tốc độ hoặc không phát xung chính vì giữ nguyên SMB67 và SMW68 của bản cũ.
4. Cách 2: Position Control Wizard trên S7-200 cổ
Với S7-200 cổ, STEP 7-Micro/WIN V4 có Position Control Wizard (menu Tools). Với kênh PTO tích hợp, Wizard hỏi tần số tối đa (MAX_SPEED), tần số khởi động/dừng (SS_SPEED), thời gian tăng tốc, giảm tốc và cho phép tạo sẵn các profile chuyển động (mỗi profile gồm nhiều bước tốc độ – quãng đường). Kết quả là một bộ chương trình con có sẵn.
Các khối lệnh Wizard sinh cho kênh PTO tích hợp
| Khối lệnh | Chức năng |
| PTOx_CTRL | Khởi tạo, cho phép kênh và dừng khẩn; gọi mỗi chu kỳ quét bằng SM0.0 |
| PTOx_RUN | Chạy một profile đã cấu hình trong Wizard (có tăng tốc, giảm tốc) |
| PTOx_MAN | Chạy tay với tốc độ thay đổi được, dùng cho nút nhấn chạy tới/lùi |
| PTOx_LDPOS | Nạp giá trị vị trí hiện tại, thường đặt bằng 0 khi chạm cảm biến gốc |
| PTOx_ADV | Kết thúc bước đang chạy của profile, chuyển sang bước kế tiếp |
Ưu điểm của Wizard so với PLS là có sẵn tăng tốc, giảm tốc và biến vị trí hiện tại, nên chương trình gọn và ít lỗi. Nhược điểm là quãng đường mỗi profile phải khai báo trong Wizard; muốn đi tới vị trí do người vận hành nhập trên màn hình thì vẫn phải kết hợp PLS đa đoạn hoặc tự tính lại bảng profile.
Module định vị EM253
EM253 là module mở rộng chuyên phát xung cho một trục, tần số tới 200 kHz, có ngõ ra xung vi sai 5 V (P0+/P0−, P1+/P1−) và các ngõ vào riêng cho STP, RPS, ZP, LMT+, LMT−. Module tự xử lý tăng tốc, về gốc, giới hạn hành trình, không phụ thuộc chu kỳ quét của CPU. Wizard sinh bộ lệnh POSx_ (POSx_CTRL, POSx_MAN, POSx_GOTO, POSx_RUN, POSx_RSEEK, POSx_LDPOS, POSx_DIS…), cách dùng gần giống bộ lệnh AXISx_ của S7-200 SMART ở mục sau. Module đã ngừng sản xuất, giá hàng tháo máy thường cao hơn một CPU S7-200 SMART mới.
5. Cách 3: Motion Wizard và lệnh AXISx_ trên S7-200 SMART
Với S7-200 SMART, mở Tools > Wizards > Motion trong STEP 7-Micro/WIN SMART. Mỗi trục (Axis 0, 1, 2) được cấu hình riêng rồi Wizard sinh bộ lệnh AXISx_ dùng như khối hàm trong ladder. Đây là cách được dùng nhiều nhất khi điều khiển động cơ bước bằng S7-200 SMART vì đủ chức năng định vị mà không cần viết logic tăng tốc.
Các bước cấu hình chính trong Motion Wizard
| Bước | Nội dung khai báo | Gợi ý cho động cơ bước |
| Hệ đo lường | Đơn vị kỹ thuật (mm, độ) hoặc số xung | Chọn đơn vị kỹ thuật để nhập vị trí bằng mm, độ |
| Xung mỗi vòng motor | Bằng số xung/vòng đặt trên driver | Ví dụ 3.200 nếu driver đặt 1/16 |
| Quãng đường mỗi vòng motor | Bước vít me, chu vi puly hoặc 360° chia tỉ số hộp số | Vít me bước 5 mm thì nhập 5,0 |
| Kiểu xung | Một pha (xung + chiều), hai pha (CW/CCW), A/B | Driver bước thông thường chọn xung + chiều |
| Ngõ vào LMT+, LMT−, RPS, STP | Chọn chân, mức tác động | Công tắc hành trình nên dùng tiếp điểm thường đóng |
| Ngõ ra DIS | Ngõ ra điều khiển ENA của driver | Trục 0 mặc định Q0.4 |
| Tốc độ tối đa và khởi động/dừng | MAX_SPEED, SS_SPEED | SS_SPEED đặt thấp, cỡ vài trăm đến 1–2 kHz quy đổi |
| Thời gian tăng tốc, giảm tốc | Tính bằng ms | Tăng dần nếu motor trượt bước khi khởi động |
| Tìm gốc (RSEEK) | Chiều tìm, tốc độ nhanh/chậm, cạnh RPS | Tốc độ chậm khi tiếp cận gốc càng thấp càng lặp lại tốt |
Các khối lệnh AXISx_ thường dùng
| Khối lệnh | Chức năng | Cách gọi |
| AXISx_CTRL | Khởi tạo và cho phép trục, báo trạng thái | Gọi mỗi chu kỳ quét qua tiếp điểm SM0.0 |
| AXISx_MAN | Chạy tay JOG tới/lùi, chạy theo tốc độ | Dùng cho chế độ chỉnh máy |
| AXISx_GOTO | Đi tới vị trí tuyệt đối hoặc tương đối | Mode 0 tuyệt đối, 1 tương đối, 2 chạy liên tục thuận, 3 chạy liên tục nghịch |
| AXISx_RSEEK | Tìm điểm gốc theo cấu hình | Bắt buộc trước khi dùng vị trí tuyệt đối |
| AXISx_LDPOS | Nạp giá trị vị trí hiện tại | Thay cho RSEEK khi máy có cách xác định gốc khác |
| AXISx_RUN | Chạy profile đã khai báo trong Wizard | Dùng cho chu trình cố định nhiều bước |
| AXISx_RDPOS | Đọc vị trí hiện tại của trục | Hiển thị lên HMI |
Ví dụ chu trình cắt theo chiều dài với AXIS0_GOTO
- Mạng 1: SM0.0 → AXIS0_CTRL (MOD_EN = 1), đọc trạng thái Done, Error, C_Pos.
- Mạng 2: Khi bật máy lần đầu, cạnh lên nút "Về gốc" → AXIS0_RSEEK; Done = 1 thì đặt cờ "đã có gốc".
- Mạng 3: Cạnh lên lệnh "Cấp phôi" → AXIS0_GOTO với Pos = chiều dài cần cắt (mm), Speed = tốc độ cấp, Mode = 1 (tương đối).
- Mạng 4: Done của AXIS0_GOTO = 1 → bật van dao cắt, hết thời gian cắt thì quay lại mạng 3.
Chỉ một khối chuyển động được hoạt động tại một thời điểm trên mỗi trục, nên ladder phải khóa chéo: đang GOTO thì không cho MAN, đang RSEEK thì không cho GOTO. Chân Abort của GOTO hoặc RUN, khi EN đang bật, tác động lên mọi lệnh chuyển động của trục đó. Từ firmware V2.7, một lệnh GOTO đang chạy ở Mode 0 hoặc 1 có thể bị lệnh GOTO mới ghi đè để đổi đích hoặc tốc độ mà không phải dừng hẳn; ở bản cũ hơn, mỗi lần di chuyển phải xong mới chạy lần tiếp theo nên giữa hai lần có khoảng nghỉ.
6. Tính xung, tốc độ và chọn motor cho đúng khả năng PLC
Phần lớn máy dùng S7-200 điều khiển động cơ bước gặp sự cố không phải do chương trình mà do tính toán xung và tốc độ không khớp giữa PLC, driver và cơ khí.
Công thức cần dùng khi khai báo Wizard hoặc tính PLS
- Số xung cần phát = quãng đường cần đi ÷ quãng đường mỗi vòng × số xung mỗi vòng.
- Tần số xung (Hz) = tốc độ trục motor (vòng/phút) × số xung mỗi vòng ÷ 60.
- Tốc độ tuyến tính (mm/s) = tần số xung ÷ số xung mỗi vòng × bước vít me (mm).
Ví dụ tính cho cơ cấu vít me trên S7-200 cổ
| Đại lượng | Giá trị | Cách tính |
| Driver đặt | 1.600 xung/vòng | 1/8 bước với motor 1,8° |
| Bước vít me | 5 mm | Mỗi vòng motor đi 5 mm |
| Độ phân giải | 0,003125 mm/xung | 5 ÷ 1.600 |
| Muốn đi 120 mm | 38.400 xung | 120 ÷ 5 × 1.600 |
| Tốc độ tối đa ở 20 kHz | 62,5 mm/s | 20.000 ÷ 1.600 × 5 |
Nếu cơ cấu cần nhanh hơn 62,5 mm/s, có ba lựa chọn: giảm vi bước xuống 1/4 (độ phân giải vẫn 0,00625 mm, thường đủ), đổi vít me bước lớn hơn, hoặc dùng CPU 100 kHz. Không nên cố tăng vi bước để "chính xác hơn", vì độ phân giải xung không đồng nghĩa với độ chính xác vị trí; chi tiết này đã được phân tích ở bài động cơ bước độ chính xác cao.
Khi trục ra cần chậm và khỏe
Với bàn xoay chia độ, cửa, van, tốc độ trục ra thấp nhưng mô-men lớn. Ghép motor với hộp số giúp giảm số xung cần phát mỗi giây và tăng mô-men, rất hợp với giới hạn 20 kHz của S7-200 cổ. Các dạng motor bước có hộp số tích hợp và bảng tốc độ ra theo tỉ số có ở bài động cơ bước giảm tốc. Khi trục chỉ cần quay liên tục với tốc độ chỉnh được, không cần định vị, hộp giảm tốc ghép motor AC có bộ điều tốc thường đơn giản và bền hơn dùng step.
Khi cần nhanh, tải nặng hoặc không được phép mất bước
Động cơ bước chạy vòng hở, mất bước thì PLC không biết. Với trục tải nặng chạy nhanh, nên chuyển sang motor servo nhận xung: cách đấu và lập trình trên S7-200 gần như giữ nguyên (vẫn PUL/DIR, vẫn AXISx_GOTO), chỉ đổi số xung mỗi vòng theo cài đặt của servo. Một servo cỡ 750 W thường thay được cho motor bước NEMA 34 trên trục cấp phôi tốc độ cao mà không phải sửa nhiều chương trình.
7. Lỗi thường gặp khi điều khiển động cơ bước bằng S7-200
| Hiện tượng | Nguyên nhân hay gặp | Cách xử lý |
| Đèn Q0.0 không nháy, motor đứng yên | CPU bản relay; hoặc thiếu nguồn 1L+ cho nhóm ngõ ra | Kiểm tra mã CPU; cấp 24 V vào 1L+, 1M |
| Đèn Q0.0 sáng nhưng driver không nhận xung | Chưa nối chung 0 V; đấu kiểu chung anode cho ngõ ra source | Nối 1M với PUL−, DIR−; đấu lại kiểu chung cathode |
| Lệnh PLS gọi mà không phát xung | Thanh ghi ảnh Q0.0 đang = 1; SMB67 sai; số xung = 0 | Reset Q0.0 trước; kiểm tra lại byte điều khiển và SMD72 |
| Chương trình chuyển từ S7-200 sang SMART chạy sai tốc độ | SMW68 vẫn là chu kỳ µs; bit 6 SMB67 chưa đảo | Đổi SMW68 sang Hz, SMB67 sang 16#C5 hoặc giá trị tương ứng |
| Motor rung, kêu mà không quay khi khởi động | Tần số khởi động quá cao, không có tăng tốc | Hạ SS_SPEED, tăng thời gian tăng tốc hoặc dùng PTO đa đoạn |
| Chạy đúng ở tốc độ thấp, lệch vị trí ở tốc độ cao | Driver đếm thiếu xung do sườn xung xấu, cáp dài, nhiễu | Thêm điện trở tải ngõ ra, dùng cáp chống nhiễu, rút ngắn cáp |
| AXISx_GOTO báo lỗi, không chạy tuyệt đối | Chưa về gốc, hoặc AXISx_CTRL không được gọi mỗi chu kỳ quét | Gọi AXISx_RSEEK hoặc AXISx_LDPOS trước; đặt AXISx_CTRL dưới SM0.0 |
| Chạm công tắc hành trình mà trục không dừng | Không khai báo LMT trong Wizard; dùng PLS mà không viết logic dừng | Khai báo LMT+, LMT−; với PLS, dùng ngắt ngõ vào để dừng PTO |
8. Khi nào nên nâng cấp từ S7-200 lên S7-1200
S7-200 cổ vẫn chạy tốt trong máy đang hoạt động, nhưng với máy làm mới hoặc cải tạo lớn, việc tiếp tục dùng nó gặp ba trở ngại: CPU và module thay thế ngày càng khó tìm, phần mềm STEP 7-Micro/WIN không còn được phát triển, và 20 kHz trên CPU phổ thông giới hạn tốc độ trục.

- Sơ đồ là CPU 1212C bản DC/DC/DC: nguồn 24 V vào L1, M; ngõ ra Q0.0–Q0.5 lấy nguồn từ 3L, 3M, cùng cách đấu source như S7-200 bản DC/DC/DC.
- Q0.0, Q0.1 của bản DC/DC/DC phát xung trực tiếp cho driver bước, nên cáp tín hiệu từ máy cũ tận dụng gần như nguyên vẹn.
So sánh nhanh ba phương án cho máy có trục động cơ bước
| Tiêu chí | S7-200 cổ (CPU 224 DC/DC/DC) | S7-200 SMART ST | S7-1200 DC/DC/DC |
| Tần số xung tối đa | 20 kHz (224XP: 100 kHz) | 100 kHz | Theo CPU và Signal Board |
| Số trục phát xung | 2 | 2–3 (ST60 tới 4) | Tới 4 trục PTO tùy cấu hình |
| Công cụ định vị | PLS, Position Control Wizard, EM253 | PLS, Motion Wizard, AXISx_ | Technology Object Axis, lệnh MC_ |
| Phần mềm | STEP 7-Micro/WIN | STEP 7-Micro/WIN SMART | TIA Portal |
| Hợp với | Sửa chữa, giữ nguyên máy cũ | Máy mới giá hợp lý, chuyển chương trình từ S7-200 dễ | Máy mới cần mạng, HMI, mở rộng lâu dài |
Nếu chỉ thay PLC hỏng trong máy cũ, S7-200 SMART là bước chuyển ít công nhất vì cấu trúc lệnh và cách đánh địa chỉ gần giống; chỉ cần chú ý các thay đổi PLS ở mục 3. Nếu làm máy mới có HMI, kết nối mạng, nhiều trục, S7-1200 phù hợp hơn; cách cấu hình Pulse Generator và Technology Object trong TIA Portal được hướng dẫn riêng ở bài điều khiển động cơ bước bằng PLC S7-1200.
9. Câu hỏi thường gặp về điều khiển động cơ bước bằng S7-200
- CPU 224 AC/DC/RLY có điều khiển động cơ bước được không? Không thể phát xung cho driver vì ngõ ra là tiếp điểm relay, chỉ đóng cắt được vài lần mỗi giây. Muốn dùng PLC này, phải thay CPU bản DC/DC/DC, thêm module EM253, hoặc giao việc phát xung cho một bộ điều khiển riêng rồi dùng relay chỉ để ra lệnh chạy/dừng.
- S7-200 cổ phát được tối đa bao nhiêu xung mỗi giây? CPU 222, 224, 226 bản DC/DC/DC phát tối đa 20 kHz trên Q0.0 và Q0.1. CPU 224XP và 224XPsi phát được 100 kHz trên hai ngõ này. Module EM253 phát tới 200 kHz.
- S7-200 SMART phát được mấy trục xung và tần số bao nhiêu? ST20 có hai trục, ST30, ST40, ST60 có ba trục, tất cả tối đa 100 kHz. ST60 với firmware V2.8 trở lên mở rộng được tới bốn trục. Các mã SR và CR không dùng để phát xung.
- Có thể dùng Q0.2 hoặc Q0.5 của CPU 224 để phát xung không? Không. Trên S7-200 cổ dòng 222–226, chỉ Q0.0 và Q0.1 có bộ phát PTO bằng phần cứng. Các ngõ ra khác chỉ bật tắt theo chu kỳ quét, quá chậm và không đều để làm xung cho driver; chúng dùng làm tín hiệu chiều quay hoặc ENA.
- Dùng lệnh PLS hay Position Control Wizard thì tốt hơn? PLS hợp với chuyển động đơn giản, cố định số xung và tốc độ thấp, hoặc khi cần kiểm soát từng ô nhớ. Wizard có sẵn tăng tốc, giảm tốc, về gốc, vị trí hiện tại, nên với máy định vị thực tế Wizard nhanh hơn và ít lỗi hơn. Trên S7-200 SMART, Motion Wizard với bộ AXISx_ gần như là lựa chọn mặc định.
- Byte điều khiển SMB67 nên đặt bao nhiêu khi dùng PLS? Trên S7-200 cổ, giá trị hay dùng là 16#85 cho PTO đơn đoạn, đơn vị 1 µs, cập nhật cả chu kỳ và số xung. Trên S7-200 SMART, giá trị tương đương là 16#C5 vì bit 6 đảo nghĩa. Dùng PTO đa đoạn thì bật thêm bit 5 và nạp địa chỉ bảng profile.
- Làm sao biết lệnh PLS đã phát xong số xung? Kiểm tra bit SM66.7 (kênh Q0.0) hoặc SM76.7 (kênh Q0.1): bit này lên 1 khi PTO ở trạng thái rảnh. Cách chắc chắn hơn là gắn chương trình ngắt vào sự kiện PTO0 hoàn tất (sự kiện 19) hoặc PTO1 hoàn tất (sự kiện 20).
- Vì sao AXIS0_GOTO chạy được ở Mode 1 nhưng báo lỗi ở Mode 0? Mode 0 là vị trí tuyệt đối, cần điểm gốc. Nếu chưa chạy AXIS0_RSEEK hoặc chưa nạp vị trí bằng AXIS0_LDPOS từ lúc cấp điện, trục chưa có gốc nên lệnh tuyệt đối không được thực hiện. Mode 1 tương đối tính từ vị trí hiện tại nên không cần gốc.
- Quên gọi AXIS0_CTRL mỗi chu kỳ quét thì sao? Trục không được khởi tạo, các lệnh GOTO, MAN, RSEEK không chạy hoặc trạng thái báo sai. AXISx_CTRL phải nằm sau tiếp điểm SM0.0 để thực thi ở mọi chu kỳ quét, không đặt trong điều kiện bật tắt.
- Chuyển chương trình PLS từ S7-200 sang S7-200 SMART cần sửa gì? Ít nhất ba điểm: SMW68 đổi từ chu kỳ sang tần số Hz, bit 6 của SMB67 (và SMB77) đảo nghĩa, và kiểm tra lại giới hạn 65.535 Hz cho PTO đơn đoạn. Chương trình dùng Position Control Wizard cũ nên cấu hình lại bằng Motion Wizard thay vì giữ khối PTOx_ cũ.
- S7-200 có điều khiển được servo nhận xung thay cho động cơ bước không? Được. Servo ở chế độ điều khiển vị trí bằng xung nhận PUL/DIR giống driver bước, nên chương trình PLS hoặc AXISx_ giữ nguyên, chỉ cần đặt lại số xung mỗi vòng cho khớp với tỉ số bánh răng điện tử của servo. Ưu điểm là servo có encoder nên không mất bước khi quá tải.
- Có cần encoder phản hồi về S7-200 khi điều khiển động cơ bước không? Không bắt buộc, vì PLC đếm số xung đã phát để biết vị trí. Encoder đưa về bộ đếm tốc độ cao của PLC chỉ cần khi trục không được phép mất bước mà không phát hiện, ví dụ trục nâng hoặc trục có va đập; trường hợp đó dùng động cơ bước vòng kín hoặc servo thường gọn hơn.






