Hướng dẫn lập trình Modbus TCP/IP cho PLC S71200

Lập trình Modbus TCP/IP trên Siemens S7-1200 là kỹ năng rất quan trọng khi cần kết nối với HMI, biến tần, hoặc thiết bị bên thứ 3. Dưới đây là hướng dẫn đầy đủ từ cơ bản đến triển khai thực tế trong TIA Portal.

1. Tổng quan Modbus TCP/IP

  • Giao thức: Modbus TCP
  • Port: 502
  • Mô hình:
    • Client (Master): PLC chủ động đọc/ghi
    • Server (Slave): PLC bị đọc/ghi

PLC S7-1200 hỗ trợ cả:

  • Modbus TCP Client
  • Modbus TCP Server

2. Chuẩn bị

Phần mềm:

  • TIA Portal

Thư viện:

  • Thư viện Modbus TCP (MB_CLIENT / MB_SERVER) (có sẵn trong TIA)

3. Cấu hình Modbus TCP Client (PLC đọc thiết bị khác)

3.1 Thêm thư viện Modbus

Trong TIA:

  • Instructions → Communication → Modbus TCP
  • Sử dụng block:
    • MB_CLIENT

3.2 Tạo Data Block

Tạo DB để lưu dữ liệu:

  • Ví dụ:
    • DB1:
      • HoldingReg[0..9] (Word)

3.3 Gọi hàm MB_CLIENT

Cấu trúc cơ bản:

  • MB_CLIENT có các chân quan trọng:
Chân Ý nghĩa
REQ Trigger gửi lệnh
DISCONNECT Ngắt kết nối
MB_MODE 0=Read, 1=Write
MB_DATA_ADDR Địa chỉ Modbus
MB_DATA_LEN Số lượng thanh ghi
CONNECT Thông tin kết nối
DONE Hoàn thành
ERROR Báo lỗi

3.4 Cấu hình kết nối (CONNECT)

Tạo một DB kết nối:

  • IP thiết bị:
    • Ví dụ: 192.168.1.20
  • Port:
    • 502

3.5 Ví dụ đọc Holding Register

  • MB_MODE = 0 (Read)
  • MB_DATA_ADDR = 40001 (hoặc offset = 0)
  • MB_DATA_LEN = 2

4. Cấu hình Modbus TCP Server (PLC cho thiết bị khác đọc)

4.1 Dùng block MB_SERVER

  • PLC sẽ đóng vai trò Slave

4.2 Cấu hình vùng dữ liệu

  • Gán vùng nhớ PLC:
Modbus PLC
Coil M
Holding Register DB

Ví dụ:

  • Holding Register → DB1.DBW0

4.3 Gọi MB_SERVER

  • Enable = TRUE
  • Port = 502

5. Mapping địa chỉ Modbus

Quy đổi chuẩn:

Modbus Địa chỉ PLC
00001 Coil (M bit)
10001 Input
30001 Input Register
40001 Holding Register

Ví dụ:

  • 40001 → DB1.DBW0
  • 40002 → DB1.DBW2

6. Ví dụ thực tế

PLC đọc biến tần qua Modbus TCP

  • IP biến tần: 192.168.1.50
  • Đọc:
    • Tần số: 40001
    • Dòng: 40002

→ Dùng MB_CLIENT đọc 2 thanh ghi → lưu vào DB

7. Lỗi thường gặp

7.1 ERROR = TRUE

Nguyên nhân:

  • Sai IP
  • Sai port
  • Thiết bị không hỗ trợ Modbus TCP

7.2 DONE không lên

  • Chưa kích REQ đúng cách
  • Chưa tạo trigger xung

7.3 Đọc sai dữ liệu

  • Sai offset (0-based vs 1-based)
  • Sai kiểu dữ liệu (Word/Float)

7.4 Không kết nối được

  • Firewall chặn port 502
  • Khác dải IP

8. Kinh nghiệm thực tế

  • Luôn dùng xung cạnh lên (rising edge) cho REQ
  • Không gọi MB_CLIENT liên tục trong OB1
  • Nên dùng timer (100–500ms) để poll dữ liệu
  • Nếu đọc nhiều → chia thành nhiều request

9. Debug nhanh

  • Kiểm tra bằng:
    • Ping IP
    • Dùng tool Modbus test (Modscan)

10. Kết luận

Lập trình Modbus TCP/IP trên Siemens S7-1200 trong TIA Portal không quá khó nếu nắm rõ:

  • Client vs Server
  • Mapping địa chỉ
  • Cách dùng MB_CLIENT / MB_SERVER

Đây là nền tảng để kết nối:

  • HMI ngoài (Wecon, Delta…)
  • Biến tần
  • SCADA bên thứ 3

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *