1. Giới thiệu về Modbus và PZEM004T

Modbus là giao thức truyền thông công nghiệp phổ biến, cho phép thiết bị như PLC, cảm biến và máy tính trao đổi dữ liệu với nhau. Nó hoạt động theo mô hình Master – Slave (Client – Server), trong đó thiết bị Master gửi yêu cầu và Slave phản hồi dữ liệu.

PZEM004T là module đo điện năng AC có thể đo:

  • Điện áp (V)
  • Dòng điện (A)
  • Công suất (W)
  • Điện năng (kWh)
  • Tần số (Hz)
  • Hệ số công suất

Module này sử dụng Modbus RTU qua UART/RS485 để truyền dữ liệu.


2. Tổng quan giao tiếp Modbus RTU của PZEM004T

Thông số giao tiếp chuẩn

  • Baudrate: 9600
  • Data bits: 8
  • Stop bit: 1
  • Parity: None
  • Protocol: Modbus RTU

Function Code hỗ trợ

  • 0x04: Read Input Register (đọc dữ liệu đo)
  • 0x03: Read Holding Register
  • 0x06: Write Single Register
  • 0x42: Reset năng lượng

3. Sơ đồ kết nối phần cứng

Thiết bị cần có:

  • PZEM004T
  • USB to RS485 (hoặc TTL tùy phiên bản)
  • Máy tính cài Modbus Poll

Kết nối cơ bản:

  • A → A (RS485)
  • B → B (RS485)
  • VCC, GND đúng nguồn

Lưu ý: PZEM004T V3.0 dùng TTL, cần module chuyển đổi nếu dùng RS485.


4. Cài đặt phần mềm Modbus Poll

Bước 1: Cài Modbus Poll

  • Tải và cài đặt phần mềm Modbus Poll trên Windows

Bước 2: Kết nối COM

Vào:

Connection → Connect

Cấu hình:

  • Port: COMx
  • Baud: 9600
  • Data bits: 8
  • Parity: None
  • Stop bit: 1

5. Cấu hình đọc dữ liệu PZEM004T

Bước 1: Chọn Slave ID

  • Default: 1

Bước 2: Thiết lập đọc thanh ghi

Vào:

Setup → Read/Write Definition

Cấu hình:

  • Function: 04 Read Input Registers
  • Address: 0
  • Quantity: 10

6. Bảng thanh ghi PZEM004T (quan trọng)

Thanh ghiÝ nghĩaCông thức
0x0000Voltagevalue / 10
0x0001-2Currentvalue / 1000
0x0003-4Powervalue / 10
0x0005-6Energyvalue
0x0007Frequencyvalue / 10
0x0008Power Factorvalue / 100

📌 Lưu ý:

  • Một số giá trị là 32-bit (2 thanh ghi)
  • Cần ghép lại (High + Low)

7. Cách đổi Slave ID PZEM004T từ 1 sang 2 hoặc số bất kì

Gửi lệnh đổi ID

Vào:

Setup → Write Single Register

Cấu hình:

  • Slave ID: 1 (Địa chỉ hiện tại của Slave)
  • Function: 06 (Write Single Register)
  • Address: 0x0002 ( Địa chỉ thanh ghi của Slave)
  • Value: 2 ( Số Slave cần đổi sang, ví dụ đang là 2, có thể đổi sang 3 4)

Nhấn Send


8. Cách gửi lệnh Modbus thủ công (nâng cao)

Frame đọc dữ liệu:

[Slave ID] [0x04] [Addr Hi] [Addr Lo] [Qty Hi] [Qty Lo] [CRC]

Ví dụ:

01 04 00 00 00 0A CRC

Đây là lệnh đọc 10 thanh ghi từ địa chỉ 0.


9. Lỗi thường gặp khi dùng Modbus Poll

Không nhận dữ liệu

  • Sai COM port
  • Sai baudrate
  • Đấu dây A/B ngược

Timeout / No response

  • Sai Slave ID
  • Chưa cấp nguồn PZEM

Dữ liệu sai

  • Đọc nhầm function code (phải dùng 0x04)
  • Chưa scale đúng (chia 10, 100…)

10. Ứng dụng thực tế

  • Giám sát điện năng IoT
  • Home Assistant
  • SCADA mini
  • Đo điện nhà xưởng

11. Kết luận

Việc giao tiếp Modbus Poll với PZEM004T khá đơn giản nếu nắm rõ:

  • Chuẩn Modbus RTU
  • Cấu hình COM đúng
  • Mapping thanh ghi chính xác

Categorized in:

Điện Tử & Công Nghệ,