1. Cách chia chuẩn: 4 lớp trong “thế giới code PLC”
💡 Không phải layer hệ thống, mà là layer trong code
Mapping → Data → Logic → Interface
2. Giải thích từng lớp
🔌 1. Mapping layer (kết nối với ngoài đời)
👉 Nơi map tín hiệu thật ↔ PLC
- I/O mapping
- Địa chỉ module (I0.0, Q0.0…)
- Scale analog (4–20mA → engineering unit)
🧠 Tư duy:
“Dữ liệu này lấy từ đâu ngoài đời?”
📦 2. Data layer (tổ chức dữ liệu)
👉 Nơi bạn dùng:
- UDT
- Tag
- Struct
Ví dụ:
- Motor_1
- Tank_Level
🧠 Tư duy:
“Mình lưu thông tin hệ thống như thế nào cho gọn?”
🧠 3. Logic layer (xử lý)
👉 Nơi chạy chương trình
- FB (Function Block)
- FC (Function)
- Ladder / ST
Ví dụ:
- FB_Motor
- PID control
- Interlock
🧠 Tư duy:
“Hệ thống quyết định gì?”
🖥️ 4. Interface layer (giao tiếp người dùng / hệ khác)
👉 Kết nối ra ngoài:
- HMI / SCADA tag
- Alarm
- Communication (Modbus, Ethernet/IP…)
🧠 Tư duy:
“Người vận hành hoặc hệ khác thấy gì?”
3. Mapping với thực tế (rất quan trọng 🔥)
Ngoài đời → Trong code
-----------------------------------------
Sensor → Mapping
Thiết bị (motor) → Data (UDT)
Hoạt động → Logic (FB)
Màn hình → Interface
4. Ví dụ cực dễ hiểu (1 motor)
Ngoài đời:
- Nút nhấn Start
- Motor chạy
- Có lỗi overload
Trong code:
🔌 Mapping
- I0.0 = Start button
- Q0.0 = Motor output
📦 Data
Motor_1:
- Start
- Run
- Fault
🧠 Logic (FB_Motor)
- Nếu Start → chạy
- Nếu Fault → dừng
🖥️ Interface
- HMI hiển thị:
- Running
- Alarm
5. Insight rất mạnh (giúp bạn code “có hệ thống”)
👉 Người mới:
- Viết lung tung: tag + logic trộn vào nhau
👉 Người giỏi:
- Luôn tách rõ:
Input ở đâu → lưu kiểu gì → xử lý ra sao → hiển thị thế nào
6. Một cách nhớ cực đơn giản
🔌 Mapping = “Dây”
📦 Data = “Bộ nhớ”
🧠 Logic = “Não”
🖥️ Interface = “Mặt”
7. Level cao hơn (nếu bạn đi xa)
Bạn có thể refine thêm:
- Logic layer:
- Equipment control (motor, valve)
- Process control (PID, sequence)
- Interface layer:
- Local HMI
- SCADA
- MES
8. Kết luận
✔ Trong code không gọi là layer hệ thống
✔ Nhưng có thể chia thành 4 lớp tư duy rất hiệu quả:
Mapping → Data → Logic → Interface





