Hướng dẫn chi tiết truyền thông Modbus RTU giữa plc Siemens S7-1200 và biến tần từng bước kèm video minh họa.
Cấu hình phần cứng
- Đầu tiên vào Device Configuration, chọn CPU. Trong ví dụ này sử dụng CPU 1217C DC/DC/DC.
- Tiếp theo thêm module truyền thông CM1241 RS422/485 vào cấu hình phần cứng của PLC.
- Sau khi thêm CM1241, chọn module và vào Properties → System constants để kiểm tra Hardware Identifier của cổng truyền thông.
- Trong project của video, Hardware Identifier của cổng CM1241 là: 269. Giá trị này sẽ được sử dụng cho chân
PORTcủa khốiMB_COMM_LOAD.
Lưu ý: 269 không phải giá trị cố định của mọi CM1241. Đây là Hardware ID do TIA Portal gán trong project cụ thể này. Khi làm project khác phải kiểm tra lại trong System constants.
Tham khảo: Khóa học plc online miễn phí
Tạo Data Block
- Vào Program blocks → Add new block và tạo một Global Data Block: tên
DB_Modbus - Trong Properties của DB, vào Attributes và bỏ chọn
Optimized block access. - Khi tạo DB có thể để Number = Automatic, để TIA Portal tự gán số DB.
Khai báo dữ liệu trong DB_Modbus
| Tên biến | Kiểu dữ liệu | Chức năng |
|---|---|---|
Write_Data | Array[0..9] of Word | Vùng dữ liệu gửi xuống Slave |
Send_Req | Bool | Bit yêu cầu truyền |
Done | Bool | Báo hoàn thành |
Busy | Bool | Khối đang thực hiện truyền |
Error | Bool | Báo lỗi |
Status | Word | Mã trạng thái/lỗi |
- Phần tử đầu tiên sử dụng để gửi xuống biến tần là:
DB_Modbus.Write_Data[0]
Cấu hình System Memory và Clock Memory
- Vào: PLC → Properties → System and clock memory
- System memory Enable:
System memory bitsvà đặt:System memory byte = MB1,M1.0 = FirstScanBit này ON trong chu kỳ quét đầu tiên sau khi CPU khởi động/chuyển RUN. - Clock memory Enable:
Clock memory bitsvà đặt:Clock memory byte = MB2M2.5với tag:Clock_1Hzđể kích yêu cầu truyền Modbus theo chu kỳ.
Network 1 – Khởi tạo CM1241
- Vào: Instructions → Communication → Communication processor → MODBUS (RTU) chèn khối:
MB_COMM_LOADKhối này dùng để khởi tạo/cấu hình cổng serial cho Modbus RTU. REQ := M1.0 "FirstScan"Tức là khốiMB_COMM_LOADđược yêu cầu thực hiện lúc PLC khởi động.- PORT:
PORT := 269Đây chính là Hardware Identifier của CM1241 đã kiểm tra ở phần System constants. - BAUD và PARITY:
BAUD := 9600và:PARITY := 0 MB_DB:MB_DB := "MB_MASTER"Cụ thể đây là Instance DB của khốiMB_MASTERở Network 2. Điểm này quan trọng:MB_DBkhông phảiDB_Modbuschứa Write_Data, mà liên kết tới instance DB của MB_MASTER.
Network 2 – Khối MB_MASTER
- Chèn:
MB_MASTER - REQ:
M2.5 "Clock_1Hz"dùng để kích hoạt một yêu cầu Modbus. Khối phản ứng theo yêu cầu kích hoạt của tín hiệu, không nên hiểu đơn giản rằng giữ Clock ở mức 1 thì PLC liên tục “ghi mỗi giây một lần”. - MB_ADDR:
MB_ADDR := 1Đây là địa chỉ Modbus Slave của biến tần - MODE:
MODE := 1PLC ghi dữ liệu xuống Slave/biến tần. - DATA_ADDR:
DATA_ADDR := 48194Đây là địa chỉ Modbus bắt đầu mà MB_MASTER sẽ truy cập, là địa chỉ được sử dụng cho biến tần cụ thể trong video, không được lấy48194áp dụng cho mọi biến tần. Phải tra Modbus register map/manual của đúng model biến tần. - DATA_LEN:
DATA_LEN := 1nghĩa là yêu cầu Modbus xử lý 1 register. Do một Modbus register có kích thước 16 bit nên dữ liệu tương ứng phù hợp với một: - DATA_PTR:
"DB_Modbus".Write_Data[0]Đây là phần tử đầu tiên của mảng:Write_Data : Array[0..9] of Word.Giá trị trongWrite_Data[0]được sử dụng làm dữ liệu nguồn cho lệnh ghi Modbus. - DONE – BUSY – ERROR – STATUS:
DONE → "DB_Modbus".Done,BUSY → "DB_Modbus".Busy,ERROR → "DB_Modbus".Error,STATUS → "DB_Modbus".Status DONE = TRUE→ yêu cầu truyền đã hoàn thành thành công.BUSY = TRUE→ khối đang xử lý yêu cầu truyền.ERROR = TRUE→ yêu cầu kết thúc với lỗi.STATUS→ mã trạng thái/mã lỗi để chẩn đoán.
Download xuống PLC
Sau khi hoàn thành cấu hình và chương trình, Compile rồi Download xuống PLC.
Đặc biệt phải download cả Hardware Configuration, vì CM1241 đã được thêm và cấu hình trong Device Configuration.
Kiểm tra truyền thông
Sau khi PLC chạy, quan sát hoạt động truyền/nhận của CM1241.
- Nếu có trao đổi dữ liệu, các LED TX/RX sẽ nhấp nháy theo quá trình truyền nhận.
- Đồng thời kiểm tra đấu dây RS485 giữa: CM1241 ↔ biến tần
- và bảo đảm hai bên giống nhau về: Baud rate – parity – stop bit – Slave address.
Video chi tiết
