0968140191Miền Nam
0975897066Miền Bắc

Điều khiển động cơ bước bằng PLC S7-1200: phát xung PTO, cấu hình Axis trong TIA Portal và đấu driver

Viết bởi: Vũ Hồng Phúc
Vũ Hồng Phúc
Vũ Hồng Phúc, sinh năm 1985, sau khi tốt nghiệp cử nhân tại Đại Học Bách Khoa Hà Nội, Vũ Hồng Phúc đã tự mình khám phá thế giới qua việc du học tại EF Language School London và nhiều trường đại học khác. Tích lũy kinh nghiệm trong nhiều năm, anh quyết định trở về đất nước. Vũ Hồng Phúc đã hướng đến mục tiêu phát triển Dongco3pha.com là thương hiệu "Động cơ điện" hàng đầu Việt Nam. Trong nhiều năm liền danh liên tục mang lại nhiều thành tựu cho doanh nghiệp và đóng góp nhiều giải pháp tối ưu về chế tạo máy, chế tạo động cơ giảm tốc, động cơ điện.
14 thg 10 2026 15:17

Điều khiển động cơ bước bằng PLC S7-1200 là dùng ngõ ra phát xung tốc độ cao (PTO) của CPU Siemens S7-1200 để gửi tín hiệu xung và chiều tới driver động cơ bước, còn toàn bộ việc tăng tốc, giảm tốc, đếm vị trí, về gốc và giới hạn hành trình do đối tượng công nghệ Axis trong TIA Portal đảm nhận. Người lập trình không phải tự tạo từng xung: chỉ cần gọi các lệnh MC_Power, MC_Home, MC_MoveAbsolute, MC_MoveRelative, MC_MoveJog… với vị trí tính bằng mm hoặc độ, PLC tự quy đổi ra số xung.

Cách làm này phù hợp với máy định vị một đến bốn trục không cần nội suy: bàn xoay chia độ, cữ chặn máy cắt, cơ cấu đẩy phôi, trục nâng hạ, máy dán nhãn, máy cấp liệu theo chiều dài. Phần lớn rắc rối khi chạy lần đầu không nằm ở động cơ mà ở ba chỗ: chọn nhầm CPU ngõ ra relay, đấu ngõ ra PNP của S7-1200 sai kiểu với ngõ vào quang của driver, và khai báo số xung trên vòng trong TIA Portal không khớp với vi bước gạt trên driver.

Kiến thức chung về PLC phát xung của các hãng (Mitsubishi, Delta, Omron…), cách chọn PLC transistor NPN hay PNP được trình bày ở bài cách điều khiển động cơ bước bằng PLC. Nội dung dưới đây đi thẳng vào S7-1200 và TIA Portal.

1. CPU S7-1200 nào phát xung được để điều khiển động cơ bước

Không phải CPU S7-1200 nào cũng phát xung ra ngõ ra tích hợp. Ký hiệu ba phần trên mã CPU cho biết nguồn nuôi / kiểu ngõ vào / kiểu ngõ ra:

  • DC/DC/DC: nguồn 24 VDC, ngõ vào 24 VDC, ngõ ra transistor (MOSFET) 24 VDC. Loại này phát xung trực tiếp trên Q0.0–Q0.3.
  • AC/DC/RLY và DC/DC/RLY: ngõ ra là relay. Relay không đóng cắt nổi hàng nghìn lần mỗi giây, nên CPU không cho gán bộ phát xung vào ngõ ra tích hợp. Muốn điều khiển động cơ bước phải cắm thêm signal board ngõ ra số tốc độ cao ở mặt trước CPU.

Từ firmware V4, mỗi CPU S7-1200 có tối đa 4 bộ phát xung (Pulse_1 đến Pulse_4), tức điều khiển được tối đa 4 trục động cơ bước hoặc servo nhận xung cùng lúc. Các CPU firmware đời đầu chỉ có 2 bộ phát xung.

Tần số xung tối đa theo ngõ ra

CPU / moduleNgõ ra dùng phát xungTần số tối đaGhi chú
CPU 1211C DC/DC/DCQ0.0–Q0.3100 kHzĐủ 4 ngõ ra nhanh
CPU 1212C DC/DC/DCQ0.0–Q0.3100 kHzQ0.4, Q0.5 chỉ khoảng 20 kHz
CPU 1214C, 1215C DC/DC/DCQ0.0–Q0.3100 kHzQ0.4 trở đi chỉ khoảng 20 kHz
CPU 1217C DC/DC/DCQ0.0–Q0.3 (vi sai)1 MHzNgõ ra vi sai 5 V, cần driver nhận tín hiệu vi sai
Signal board DQ4 24 VDC 200 kHz4 ngõ ra trên board200 kHzDùng được cho cả CPU ngõ ra relay
Signal board DQ4 5 VDC 200 kHz4 ngõ ra trên board200 kHzHợp với driver chỉ nhận mức 5 V
Signal board DI2/DQ2 24 VDC 200 kHz2 ngõ ra trên board200 kHzĐủ cho 1 trục (xung + chiều)
Signal board DI2/DQ2 24 VDC 20 kHz2 ngõ ra trên board20 kHzĐời cũ, chỉ hợp với tốc độ thấp

Khi mua signal board để dùng với CPU ngõ ra relay, cần xem kỹ chữ "200 kHz" trên mã và nhãn. Board đời cũ 20 kHz với driver đặt 1/8 chỉ cho tối đa khoảng 750 vòng/phút ở trục motor.

Điều khiển động cơ bước bằng PLC S7-1200 và TIA Portal: CPU Siemens trao đổi tín hiệu với động cơ bước size 57

Lưu ý trước khi chọn CPU

  • Mỗi trục chiếm hai ngõ ra: một ngõ xung, một ngõ chiều. CPU 1214C DC/DC/DC có 4 ngõ ra nhanh nên trên ngõ ra tích hợp chỉ chạy thoải mái 2 trục 100 kHz; trục thứ ba, thứ tư phải dùng ngõ ra chậm hơn hoặc signal board.
  • Ngõ ra đã gán cho bộ phát xung không còn dùng như ngõ ra thường; ghi đè giá trị Q0.0 trong chương trình không có tác dụng và dễ gây nhầm khi gỡ lỗi.
  • Bất kỳ driver nhận xung/chiều (PUL/DIR) nào cũng ghép được, từ module phổ thông đến driver công nghiệp cho động cơ bước 2 pha size 57, 86.

2. Tính tần số xung cần cho động cơ bước trước khi cấu hình

Bước bị bỏ qua nhiều nhất là tính xem trục cần bao nhiêu kHz. Công thức chỉ có một dòng:

Tần số xung (Hz) = Số xung trên một vòng motor × Tốc độ motor (vòng/phút) ÷ 60

Số xung trên một vòng = 200 (motor 1,8°) × hệ số vi bước đặt trên driver. Driver gạt 1/8 thì 1.600 xung/vòng, gạt 1/16 thì 3.200 xung/vòng.

Cơ cấuSố xung/vòng motorQuãng đường mỗi vòngXung cho 1 đơn vịTốc độ mong muốn → tần số cần
Vít me bước 5 mm, nối thẳng1.6005 mm320 xung/mm100 mm/s → 32 kHz
Vít me bước 10 mm, nối thẳng1.60010 mm160 xung/mm200 mm/s → 32 kHz
Puly GT2 20 răng (dây đai)1.60040 mm40 xung/mm500 mm/s → 20 kHz
Bàn xoay qua hộp số 10:11.60036° trục ra44,44 xung/độ1 vòng bàn/giây → 16 kHz
Trục motor chạy 600 vòng/phút3.200 (1/16)––32 kHz

Ngõ ra tích hợp 100 kHz thừa sức cho hầu hết cơ cấu, vì motor bước hybrid mất mô-men rõ rệt khi vượt 600–1.000 vòng/phút. Nếu phép tính vượt 100 kHz, có ba hướng: giảm vi bước trên driver (1/4 thay cho 1/16), dùng signal board 200 kHz, hoặc chuyển sang servo. Với cơ cấu có hộp số, tốc độ trục ra bằng tốc độ motor chia tỉ số truyền, nên tần số xung cần cao hơn nhiều so với motor trục trơn; cách chọn hộp và tỉ số xem ở bài động cơ bước có hộp số.

Vi bước cao chủ yếu giúp chạy êm chứ không làm vị trí chính xác hơn tương ứng; với PLC, mức 1/4 đến 1/16 là vùng cân bằng. Sai số bước và vi bước được giải thích ở bài động cơ bước độ chính xác cao.

3. Đấu ngõ ra Q0.0, Q0.1 của S7-1200 tới driver động cơ bước

Ngõ ra transistor của S7-1200 bản DC/DC/DC là kiểu PNP (sourcing): khi bật, ngõ ra nối lên +24 V; khi tắt, ngõ ra hở; dòng định mức 0,5 A mỗi ngõ. Vì vậy driver phải đấu kiểu chung âm (chung cathode): các chân PUL−, DIR−, ENA− nối về 0 V của nguồn 24 V cấp cho ngõ ra PLC (cọc 3M hoặc M của CPU), còn PUL+, DIR+ nhận tín hiệu từ PLC.

Bảng đấu dây một trục tiêu chuẩn

Chân PLC S7-1200Chức năng trong TIA PortalChân driverGhi chú
Q0.0Pulse output (xung)PUL+Qua điện trở hạn dòng nếu driver chỉ nhận 5 V
Q0.1Direction output (chiều)DIR+Qua điện trở hạn dòng nếu driver chỉ nhận 5 V
Q0.4 (tùy chọn)Enable output (cho phép driver)ENA+Nhiều driver: có dòng qua ENA thì motor thả lỏng, cần đảo logic
I0.4 (tùy chọn)Ready input (driver sẵn sàng)ALM/RDY của driverChỉ driver có ngõ ra báo lỗi mới dùng
3M / M0 V chungPUL−, DIR−, ENA−Bắt buộc chung 0 V với nguồn ngõ ra PLC
3L+ / L++24 V cấp cho nhóm ngõ ra–Thiếu nguồn ở cọc này thì ngõ ra không bao giờ lên mức cao

Q0.0/Q0.1 là mặc định cho Pulse_1, Pulse_2 thường dùng Q0.2/Q0.3.

Mức điện áp tín hiệu và điện trở hạn dòng

Driver công nghiệp đời mới (DM542, DM556, DM860 bản mới và nhiều driver vòng kín) thường in "5–24 V" ở cụm tín hiệu, khi đó nối thẳng 24 V từ PLC. Driver chỉ ghi 5 V, hoặc có jumper chọn 5 V/24 V, thì phải gạt jumper sang 24 V hoặc mắc điện trở nối tiếp khoảng 2–2,2 kΩ, 0,5 W ở mỗi chân PUL+, DIR+. Bảng điện trở cho từng mức áp và cách nhận biết module ghi 5 V được trình bày chi tiết ở bài mạch điều khiển động cơ bước TB6600; quy tắc áp dụng y hệt cho các driver khác dùng optocoupler.

Chất lượng xung ở tần số cao

Ngõ ra PNP khi tắt chỉ "buông" chứ không kéo về 0 V. Tải là optocoupler dòng nhỏ và dây dài thì sườn xuống của xung bị kéo dài; ở vài chục kHz driver có thể đếm thiếu xung, motor chạy hụt mà PLC vẫn báo đã tới vị trí. Thêm tải phụ để dòng ngõ ra đạt khoảng 10 % dòng định mức là cách cải thiện chất lượng xung hiệu quả. Thực tế tại tủ điện, mắc một điện trở khoảng 470 Ω – 1 kΩ (công suất 2 W) giữa Q0.0 và 0 V là đủ làm sườn xung gọn lại.

Cảnh báo khi đấu tín hiệu

  • Không nối ngõ ra PNP của S7-1200 vào driver đấu chung dương (chung anode): PUL+ đã ở +5 V, ngõ ra PLC bật hay tắt thì LED trong opto cũng không có dòng, motor không quay.
  • Dây xung và dây chiều nên dùng cáp xoắn có chống nhiễu, đi tách khỏi cáp động lực motor và biến tần, chiều dài càng ngắn càng tốt.
  • 0 V của nguồn tín hiệu phải nối chung với chân PUL−/DIR−; thiếu dây 0 V này là lỗi gặp nhiều nhất khi motor hoàn toàn đứng im.

Ngõ vào công tắc hành trình và cảm biến gốc

Ngõ vào số của S7-1200 bản 24 VDC đấu được cả cảm biến PNP lẫn NPN, tùy cách nối cọc chung 1M: 1M về 0 V để dùng cảm biến PNP, 1M lên +24 V để dùng cảm biến NPN. Không trộn cảm biến PNP và NPN trên cùng nhóm ngõ vào dùng chung 1M. Công tắc hành trình cứng nên dùng tiếp điểm thường đóng (NC) để đứt dây cũng làm trục dừng; trong TIA Portal chỉ cần chọn mức tác động "Low level" cho ngõ vào đó.

4. Cấu hình bộ phát xung và Technology Object Axis trong TIA Portal

Cấu hình điều khiển động cơ bước bằng PLC S7-1200 trong TIA Portal đi theo đúng thứ tự trên cây cấu hình của Axis.

Bước 1: Thêm đối tượng công nghệ Axis

Trong cây dự án, mở CPU → Technology objects → Add new object → Motion Control → chọn TO_PositioningAxis, đặt tên ví dụ "Axis_1". TIA Portal tạo kèm DB của trục chứa vị trí, tốc độ, bit trạng thái và bit lỗi.

Bước 2: Basic parameters – General và Drive

  • Drive (General): chọn "PTO (Pulse Train Output)" cho động cơ bước.
  • Measurement unit: chọn mm cho trục thẳng, độ (°) cho bàn xoay, hoặc pulse nếu muốn làm việc trực tiếp với số xung.
  • Pulse generator: chọn Pulse_1. Nếu bộ phát xung chưa được bật trong cấu hình thiết bị, nút "Device configuration" dẫn thẳng tới chỗ bật.
  • Signal type: chọn "PTO (pulse A and direction B)" cho driver xung/chiều thông thường. Từ firmware V4 có thêm kiểu xung thuận/nghịch (CW/CCW) và A/B lệch pha.
  • Pulse output và Direction output: mặc định Q0.0 và Q0.1; cột bên cạnh hiển thị tần số tối đa của ngõ ra đã chọn.
  • Enable output và Ready input: khai báo nếu muốn PLC tự bật driver khi MC_Power kích hoạt và chờ tín hiệu sẵn sàng; không dùng thì đặt Ready input là TRUE.

Cấu hình Hardware interface của trục trong TIA Portal khi điều khiển động cơ bước bằng PLC S7-1200: Pulse_1, kiểu PTO pulse A và direction B, Q0.0 xung, Q0.1 chiều, 100 kHz on-board

Hình trên là dự án phát xung cho servo MR-J3-A; phần Hardware interface giống hệt khi nối driver động cơ bước, vì với PLC cả hai đều là thiết bị nhận xung và chiều.

Bước 3: Extended parameters – Mechanics

  • Pulses per motor revolution: số xung trên một vòng motor, phải bằng đúng giá trị vi bước đang gạt trên driver (ví dụ 1.600 cho 1/8). Sai chỗ này là trục chạy sai quãng đường theo tỉ lệ cố định.
  • Distance per revolution (Load movement per motor revolution): quãng đường tải đi được khi motor quay một vòng. Vít me 5 mm nối thẳng: 5 mm. Bàn xoay qua hộp số 10:1: 36°. Puly GT2 20 răng: 40 mm.
  • Invert direction signal: đánh dấu khi trục chạy ngược với chiều mong muốn, thay vì đổi dây pha motor hay sửa chương trình.

Bước 4: Dynamics – tốc độ và gia tốc

  • Maximum velocity: quy ra xung không được vượt tần số tối đa của ngõ ra.
  • Start/stop velocity: tốc độ khởi đầu và kết thúc, motor nhảy thẳng lên mức này không qua tăng tốc. Với động cơ bước nên đặt thấp, khoảng 0,5–1 vòng/giây quy đổi; đặt cao dễ làm motor giật và trượt bước khi khởi động có tải.
  • Acceleration / Deceleration: gia tốc tăng và giảm tốc, liên kết với thời gian tăng/giảm tốc.
  • Jerk limit: bật để có đường tăng tốc mềm kiểu chữ S, giảm va đập với tải quán tính lớn.
  • Emergency deceleration: gia tốc dừng khẩn cấp khi chạm công tắc hành trình hoặc khi tắt MC_Power với chế độ dừng khẩn.

Bước 5: Position limits và Homing

  • Hardware limit switches: chọn ngõ vào và mức tác động cho công tắc giới hạn dưới, trên; chạm công tắc thì trục dừng khẩn và báo lỗi.
  • Software limit switches: giới hạn mềm bằng giá trị vị trí, chỉ có hiệu lực sau khi trục đã về gốc. Nên đặt bên trong giới hạn cứng vài mm.
  • Homing: chọn ngõ vào cảm biến gốc, chiều tiến về gốc, phía cảm biến (sườn lên hay sườn xuống), tốc độ tiếp cận nhanh, tốc độ về gốc chậm, độ lệch gốc (home offset) và tùy chọn tự đảo chiều khi chạm công tắc hành trình.

Bấm Compile để TIA Portal báo các giá trị vượt giới hạn phần cứng; nạp thay đổi cấu hình Technology Object thường cần chuyển CPU sang STOP.

5. Chạy thử trục bằng Axis control panel trước khi viết chương trình

Mục Commissioning → Axis control panel của trục cho chạy tay từ máy tính lập trình, không cần code – cách nhanh nhất để tách lỗi phần cứng khỏi lỗi chương trình:

  • Bấm "Activate" để giành quyền điều khiển, sau đó "Enable" để bật trục.
  • Chọn Jog, đặt tốc độ nhỏ, giữ nút Forward/Backward và quan sát motor.
  • Chọn Positioning, nhập quãng đường ví dụ 100 mm, đo thực tế bằng thước để kiểm chứng số xung/vòng và quãng đường/vòng.
  • Thử Homing để xác nhận cảm biến gốc và chiều về gốc.

Mục Diagnostics của trục hiển thị trạng thái, vị trí, tốc độ và các bit lỗi. Nếu Axis control panel chạy đúng mà chương trình không chạy, lỗi chắc chắn nằm ở logic gọi lệnh MC. Nếu panel cũng không chạy, kiểm tra lại dây, nguồn 24 V cho cọc 3L+ và cấu hình bộ phát xung.

Lưu ý: không kích hoạt được Axis control panel khi chương trình đang bật trục bằng MC_Power, và ngược lại. Khi chạy thử xong phải bấm "Deactivate" để trả quyền điều khiển cho chương trình.

6. Các lệnh Motion Control dùng cho động cơ bước trên S7-1200

Lệnh MC nằm trong thư viện Instructions → Technology → Motion Control. Mỗi lệnh có DB instance riêng, ngõ vào Axis nối tới DB trục "Axis_1".

LệnhChức năngTham số chínhKiểu kích hoạt
MC_PowerBật/tắt trục, bật ngõ Enable outputEnable, StopModeTheo mức, phải gọi liên tục mỗi chu kỳ quét
MC_ResetXác nhận lỗi; Restart nạp lại cấu hình trụcExecute, RestartSườn lên
MC_HomeĐặt gốc tọa độ, về gốc chủ động/bị độngExecute, Position, ModeSườn lên
MC_MoveAbsoluteChạy tới vị trí tuyệt đối (cần đã về gốc)Execute, Position, VelocitySườn lên
MC_MoveRelativeChạy thêm một quãng so với vị trí hiện tạiExecute, Distance, VelocitySườn lên
MC_MoveVelocityChạy liên tục ở tốc độ đặt đến khi có lệnh khácExecute, Velocity, DirectionSườn lên
MC_MoveJogChạy tay khi giữ nútJogForward, JogBackward, VelocityTheo mức
MC_HaltDừng trục theo gia tốc giảm tốc đã cấu hìnhExecuteSườn lên

Các lệnh di chuyển có chung ngõ ra Done, Busy, CommandAborted, Error, ErrorID, ErrorInfo. Bốn quy tắc cần nhớ:

  • MC_Power đặt ở đầu chương trình, gọi không điều kiện trong mỗi chu kỳ quét, Enable nối tới bit cho phép chạy. Không gọi MC_Power trong khối chỉ chạy một lần.
  • Các lệnh dùng Execute chỉ nhận sườn lên. Giữ Execute ở mức 1 không làm lệnh chạy lại; muốn chạy lần hai phải trả Execute về 0 rồi bật lên 1.
  • Lệnh di chuyển mới ngắt lệnh đang chạy (lệnh cũ báo CommandAborted).
  • StartMode của MC_Power bị bỏ qua với trục PTO; StopMode quyết định cách dừng khi tắt Enable: 0 là dừng khẩn theo gia tốc dừng khẩn, 1 là dừng ngay (ngắt xung), 2 là dừng khẩn có giới hạn jerk.

Đọc vị trí và trạng thái trục

Vị trí và tốc độ hiện tại đọc từ DB trục: "Axis_1".Position và "Axis_1".Velocity. Các bit hay dùng nằm trong "Axis_1".StatusBits, ví dụ HomingDone (đã về gốc), StandStill (đứng yên), Enable; lỗi nằm trong "Axis_1".ErrorBits, ví dụ chạm công tắc hành trình cứng hoặc giới hạn mềm. Với động cơ bước chạy vòng hở, "vị trí" này là vị trí PLC đã phát xung tới, không phải vị trí đo được ở trục motor; nếu motor trượt bước, PLC không biết.

7. Về gốc bằng MC_Home cho trục động cơ bước

Động cơ bước không có encoder tuyệt đối, nên sau mỗi lần bật nguồn PLC không biết trục đang ở đâu. MC_Home giải quyết việc này. Tham số Mode quyết định cách về gốc:

ModeKiểu về gốcCách hoạt độngKhi nào dùng
0Gốc trực tiếp tuyệt đốiGán ngay vị trí hiện tại bằng giá trị Position, trục không di chuyểnĐã đưa trục tới điểm chuẩn bằng tay, hoặc chỉ cần reset tọa độ
1Gốc trực tiếp tương đốiVị trí mới = vị trí hiện tại + Position, không di chuyểnDịch gốc tọa độ, bù sai lệch
2Gốc bị độngKhông tự chạy; khi trục đi qua cảm biến gốc do lệnh khác thì gán gốcBăng tải, trục chạy liên tục đi ngang qua dấu
3Gốc chủ độngTự chạy tìm cảm biến theo tốc độ tiếp cận, đảo chiều, dò lại chậm, gán gốcTrường hợp phổ biến nhất cho trục định vị

Cảm biến tiệm cận PNP 24 V 3 dây là lựa chọn dễ nhất; cần độ lặp lại cao hơn thì dùng cảm biến quang dạng khe và dò ở tốc độ thật thấp.

Sau khi về gốc thành công, bit HomingDone lên 1 và lúc đó MC_MoveAbsolute mới được phép chạy, giới hạn mềm mới có hiệu lực. Tắt MC_Power hoặc mất nguồn CPU, trục PTO mất trạng thái đã về gốc, nên chương trình phải buộc về gốc lại trước khi chạy tự động.

8. Chương trình mẫu: trục vít me đi tới các vị trí đặt sẵn

Bài toán mẫu: một trục vít me bước 5 mm, động cơ bước NEMA 23, driver gạt 1/8 (1.600 xung/vòng). Khi bấm Start, trục về gốc, sau đó lần lượt đi tới 50 mm, 120 mm, 200 mm, mỗi điểm dừng 2 giây rồi quay về 0. Chương trình viết theo kiểu bước tuần tự.

BướcĐiều kiện chuyểnHành độngGhi chú
0Nút Start, trục đã Enable (MC_Power.Status = 1)Kích MC_Home, Mode 3Về gốc chủ động
10MC_Home.DoneKích MC_MoveAbsolute, Position 50.0, Velocity 50.0Tốc độ 50 mm/s = 16 kHz
20MC_MoveAbsolute.Done, chờ 2 sPosition 120.0Chạy lại cùng lệnh với giá trị mới
30Done, chờ 2 sPosition 200.0–
40Done, chờ 2 sPosition 0.0Về điểm đầu
99Bất kỳ lệnh nào báo ErrorDừng chuỗi, bật đèn lỗi, chờ ResetLưu ErrorID để hiển thị

Viết bằng SCL, vài dòng cốt lõi

  • "MC_Power_DB"(Axis := "Axis_1", Enable := "Cho_phep", StopMode := 0);
  • "MC_MoveAbsolute_DB"(Axis := "Axis_1", Execute := #ExeAbs, Position := #ViTri, Velocity := 50.0);
  • IF "MC_MoveAbsolute_DB".Done THEN #ExeAbs := FALSE; #Buoc := #Buoc + 10; END_IF;
  • IF "MC_MoveAbsolute_DB".Error THEN #MaLoi := "MC_MoveAbsolute_DB".ErrorID; #Buoc := 99; END_IF;

Điểm quan trọng trong đoạn trên là trả #ExeAbs về FALSE sau khi lệnh xong, để lần kích sau có sườn lên.

Nút dừng khẩn của máy thật phải ngắt bằng phần cứng (nguồn driver hoặc ngõ ENA), không chỉ gửi MC_Halt qua chương trình.

9. Kết nối HMI để chạy tay, nhập vị trí và hiển thị trạng thái

HMI Siemens nối S7-1200 qua PROFINET, cấu hình chung dự án TIA Portal nên gán tag trực tiếp từ DB trục và DB lệnh MC.

Chức năng trên HMITag nối tớiKiểu thao tác trên nút
Jog tiến / Jog lùiBit nối JogForward, JogBackward của MC_MoveJogSet bit khi nhấn, Reset bit khi nhả
Nhập vị trí đíchBiến Real làm Position của MC_MoveAbsoluteÔ nhập số, giới hạn min/max
Hiển thị vị trí hiện tại"Axis_1".PositionÔ hiển thị, 2 số lẻ
Đèn đã về gốc"Axis_1".StatusBits.HomingDoneĐèn trạng thái

Nút jog trên HMI phải dùng cặp sự kiện "Press" để Set và "Release" để Reset, không dùng sự kiện "Click" vì trục sẽ chạy mãi. Do trễ truyền thông, nhả nút trục vẫn đi thêm một đoạn ngắn, nên để tốc độ jog thấp; ô nhập vị trí đặt giới hạn đúng bằng hành trình cơ khí.

10. Giới hạn của S7-1200 khi điều khiển động cơ bước và khi nào nên chọn hướng khác

S7-1200 phát xung gọn và rẻ cho trục định vị độc lập, nhưng có các giới hạn sau:

  • Không nội suy nhiều trục: mỗi trục chạy độc lập, không có lệnh nội suy đường thẳng hay cung tròn giữa hai trục.
  • Tối đa 4 trục xung trên một CPU.
  • Vòng hở: PLC đếm xung đã phát, không biết motor có trượt bước hay không. Không chấp nhận mất vị trí thì dùng step vòng kín có encoder hoặc servo.
  • Tốc độ cao, tải quán tính lớn: động cơ bước mất mô-men nhanh khi tăng tốc độ; trên khoảng 1.000 vòng/phút nên chọn servo.

Thay động cơ bước bằng motor servo loại nhận xung, cấu hình TIA Portal gần như giữ nguyên. Một bộ motor servo 750W thường là bước nâng cấp tự nhiên cho trục vít me đang dùng động cơ bước NEMA 34 bị trượt bước ở tốc độ cao. Với trục chỉ cần chạy liên tục theo tốc độ đặt, không cần định vị, motor AC kèm động cơ giảm tốc và bộ điều tốc hoặc biến tần đơn giản và bền hơn động cơ bước.

Người đang dùng hệ cũ S7-200 hoặc S7-200 SMART có thể đối chiếu cách cấu hình bằng Position Control Wizard ở bài điều khiển động cơ bước bằng S7-200. Kiến thức nền về cấu tạo, các loại và cách chọn động cơ bước xem ở trang tổng quan động cơ bước.

11. Lỗi thường gặp khi điều khiển động cơ bước bằng PLC S7-1200 và cách xử lý

Hiện tượngNguyên nhân thường gặpCách xử lý
Không chọn được Pulse_1 trên ngõ ra Q0.0CPU ngõ ra relay (AC/DC/RLY, DC/DC/RLY)Lắp signal board ngõ ra số 200 kHz và gán bộ phát xung sang ngõ ra của board
Lệnh MC báo Busy, Q0.0 không ra xungThiếu nguồn 24 V ở cọc 3L+, hoặc trục chưa EnableĐo áp cọc 3L+ – 3M; kiểm tra MC_Power.Status = 1
Có xung ở Q0.0 (đo được áp) nhưng motor đứng imDriver đấu chung anode, thiếu dây 0 V, driver chưa EnableĐấu chung cathode, nối PUL−/DIR− về 3M, kiểm tra logic chân ENA
Motor chạy được lần đầu, lần sau không chạyExecute không có sườn lên mớiReset bit Execute sau khi Done hoặc Error
Chạy sai quãng đường theo tỉ lệ cố định (gấp đôi, một nửa)Pulses per motor revolution khác vi bước gạt trên driverSửa cho khớp, đo lại bằng Axis control panel
Chạy hụt quãng đường không đều, càng nhanh càng hụtMotor trượt bước do tăng tốc quá gắt, hoặc sườn xung xấu ở tần số caoGiảm gia tốc, giảm Start/stop velocity, thêm điện trở tải phụ ở ngõ ra xung
MC_MoveAbsolute báo lỗi ngay khi kíchTrục chưa về gốcChạy MC_Home trước; kiểm tra HomingDone
MC_Home báo lỗi "Technology object not activated yet" (ErrorID 16#8206)Trục chưa được bật bằng MC_Power hoặc đang bị Axis control panel giữ quyềnBật Enable của MC_Power, Deactivate panel
Về gốc chạy mãi không dừngCảm biến gốc sai địa chỉ, sai mức tác động, cảm biến NPN đấu vào nhóm ngõ vào đang dùng PNPKiểm tra đèn ngõ vào khi che cảm biến, sửa cấu hình Homing
Motor kêu, rung mạnh ở một dải tốc độCộng hưởng tầng giữa của động cơ bướcTăng vi bước, tránh dải tốc độ đó, thêm giảm chấn hoặc dùng driver có chống cộng hưởng

ErrorID cho biết nhóm lỗi, ErrorInfo cho biết chi tiết. Chọn lệnh và nhấn F1 để xem mô tả mã đúng phiên bản Motion Control đang dùng, vì bảng mã khác nhau giữa các phiên bản.

12. Câu hỏi thường gặp về điều khiển động cơ bước bằng PLC S7-1200

  • CPU 1214C AC/DC/RLY có điều khiển động cơ bước được không? Được, nhưng không dùng ngõ ra relay trên thân CPU. Cần cắm thêm signal board ngõ ra số tốc độ cao (loại DQ4 24 VDC 200 kHz hoặc DI2/DQ2 24 VDC 200 kHz) ở mặt trước CPU, rồi trong cấu hình bộ phát xung chọn ngõ ra của board.
  • Một CPU S7-1200 điều khiển được tối đa mấy động cơ bước? Tối đa 4 trục xung với firmware V4 trở lên, mỗi trục cần một ngõ xung và một ngõ chiều. Muốn cả 4 trục chạy tốc độ cao thì phải kết hợp 4 ngõ ra nhanh trên CPU với signal board, vì các ngõ ra từ Q0.4 trở đi chỉ đạt khoảng 20 kHz.
  • Driver chỉ có kiểu đấu chung anode thì nối với ngõ ra PNP của S7-1200 được không? Không nối trực tiếp được, vì ngõ ra PNP chỉ cấp dòng ra chứ không kéo xuống 0 V. Phần lớn driver cho phép đấu chung cathode bằng cách nối PUL−, DIR− về 0 V; nếu driver bắt buộc chung anode, dùng một module chuyển đổi tín hiệu PNP sang NPN tốc độ cao hoặc chọn signal board 5 V.
  • Có bắt buộc chạy MC_Home trước khi dùng MC_MoveRelative không? Không. MC_MoveRelative, MC_MoveVelocity và MC_MoveJog chạy được khi trục chưa về gốc, chỉ MC_MoveAbsolute và giới hạn mềm cần trục đã về gốc.
  • Mất điện rồi bật lại, PLC S7-1200 có nhớ vị trí của động cơ bước không? Không đáng tin. Trục PTO mất trạng thái đã về gốc khi CPU mất nguồn hoặc tắt MC_Power, và trong lúc mất điện tải có thể bị xê dịch mà PLC không biết. Chương trình nên buộc về gốc mỗi lần khởi động.
  • Đổi chiều quay của trục trong TIA Portal ở đâu? Trong cấu hình trục, mục Extended parameters → Mechanics, đánh dấu "Invert direction signal". Sau đó kiểm tra lại chiều về gốc và hai công tắc giới hạn.
  • Có thay đổi tốc độ khi trục đang chạy được không? Được. Kích lại lệnh di chuyển (MC_MoveAbsolute, MC_MoveRelative hoặc MC_MoveVelocity) với giá trị Velocity mới; lệnh cũ bị ngắt và báo CommandAborted, trục chuyển sang tốc độ mới theo gia tốc đã cấu hình mà không dừng lại.
  • S7-1200 có chạy được máy CNC hai trục vẽ đường chéo, đường tròn không? Không phù hợp. S7-1200 không có nội suy giữa các trục; hai trục có thể khởi động cùng lúc nhưng không phối hợp tốc độ để đi đúng đường thẳng chéo hay cung tròn.
  • Dùng S7-1200 phát xung cho servo có cấu hình giống động cơ bước không? Gần như giống hoàn toàn: vẫn chọn Drive kiểu PTO, vẫn Q0.0/Q0.1. Khác biệt là số xung/vòng lấy theo cài đặt bánh răng điện tử của servo driver, và nên nối ngõ báo sẵn sàng của servo về Ready input.
  • Có điều khiển động cơ bước trực tiếp từ ngõ ra S7-1200 không qua driver được không? Không. Ngõ ra PLC chỉ là tín hiệu 24 V, 0,5 A, không đảo chiều và băm dòng qua cuộn dây được. Động cơ bước luôn cần driver nhận xung/chiều nằm giữa PLC và motor.
6.333 reviews

Tin tức liên quan

Mô Tơ Điện 1 Pha, 3 Pha 220V/380V: Bảng Giá Theo kW

Mô Tơ Điện 1 Pha, 3 Pha 220V/380V: Bảng Giá Theo kW

06 thg 11 2026 13:03

Mô tơ điện 3 pha 380V 4 cực giá 920.000 – 17.440.000 đ (0.37 – 30kW); mô tơ 1 pha 220V YL, YC giá 1.070.000 – 5.840.000 đ (0.37 – 3.7kW). Kèm cách chọn 1 pha hay 3 pha, số cực theo máy.
Đọc tiếp
Hộp giảm tốc harmonic: thông số, model CSF, SHF và cách chọn

Hộp giảm tốc harmonic: thông số, model CSF, SHF và cách chọn

14 thg 10 2026 15:12

Hộp giảm tốc harmonic (strain wave) size 14 – 32, tỉ số 1/50 – 1/120, mô men 5,4 – 137 Nm. Cách đọc tem, phân loại CSF, CSG, SHF-2UH, SHF-2UJ, SHF-2SO, SHD-2SH và cách chọn theo servo.
Đọc tiếp
Khám phá Bí Quyết Điều Khiển Động Cơ RC Servo Chính Xác Bằng STM32F4

Khám phá Bí Quyết Điều Khiển Động Cơ RC Servo Chính Xác Bằng STM32F4

15 thg 4 2025 20:44

Điều khiển động cơ RC Servo bằng STM32F4 mang đến độ chính xác cao và khả năng tùy chỉnh tín hiệu PWM tối ưu. Bài viết này hướng dẫn từ cấu hình bộ định thời, lập trình tín hiệu PWM, đến tối ưu hóa hiệu suất động cơ. Đây là giải pháp lý tưởng cho kỹ sư điện, kỹ sư cơ khí và các doanh nghiệp công nghiệp.
Đọc tiếp
Điều khiển động cơ RC servo bằng PWM: chu kỳ, độ rộng xung và cách tạo xung bằng timer

Điều khiển động cơ RC servo bằng PWM: chu kỳ, độ rộng xung và cách tạo xung bằng timer

10 thg 10 2026 17:36

Điều khiển động cơ RC servo bằng PWM: chu kỳ 20 ms, độ rộng xung 500–2500 µs, tính prescaler cho AVR, STM32, ESP32, PCA9685, mạch 555 và cách đo kiểm.
Đọc tiếp
Cách Điều Khiển Động Cơ DC Servo Chính Xác Bằng Giải Thuật PID

Cách Điều Khiển Động Cơ DC Servo Chính Xác Bằng Giải Thuật PID

12 thg 10 2026 08:32

Điều khiển động cơ DC Servo bằng giải thuật PID mang lại sự ổn định và hiệu suất cao cho hệ thống công nghiệp. Tìm hiểu cách áp dụng Proportional-Integral-Derivative, vi điều khiển và encoder để tối ưu hóa tốc độ và vị trí của động cơ. Phương pháp này được sử dụng rộng rãi trong robot, dây chuyền sản xuất và các hệ thống tự động hóa.
Đọc tiếp