Truyền thông công nghiệp (Industrial Communication)
Mọi thông tin xin vui lòng liên hệ:
Truyền thông công nghiệp (Industrial Communication)
* Modbus RTU
Modbus RTU là một giao thức truyền thông công nghiệp rất phổ biến, dùng để truyền dữ liệu giữa các thiết bị như PLC, HMI, biến tần, đồng hồ đo…
RTU = Remote Terminal Unit
Dạng truyền nhị phân (binary) → nhanh, gọn
👉 Hiểu đơn giản:
Modbus RTU là cách các thiết bị giao tiếp với nhau qua RS485
Modbus RTU hoạt động theo mô hình:
Master (PLC / HMI / SCADA) → gửi yêu cầu
Slave (thiết bị) → trả lời
👉 Lưu ý quan trọng:
Chỉ Master được phép gửi lệnh
Slave chỉ phản hồi khi được hỏi
RS485 (dùng nhiều nhất)
RS232 (ít dùng)
Truyền xa (~1200m)
Chống nhiễu tốt
Kết nối nhiều thiết bị trên cùng 1 đường
Một frame Modbus RTU gồm:
[Address] [Function] [Data] [CRC]
Address → địa chỉ thiết bị (1–247)
Function → loại lệnh
Data → dữ liệu
CRC → kiểm tra lỗi
01 → Đọc coil (bit output)
02 → Đọc input
03 → Đọc thanh ghi (phổ biến nhất)
04 → Đọc input register
05 → Ghi 1 coil
06 → Ghi 1 thanh ghi
15 → Ghi nhiều coil
16 → Ghi nhiều thanh ghi
👉 Thực tế hay dùng:
03 (đọc dữ liệu)
06 / 16 (ghi dữ liệu)
Coil (0xxxx) → dạng bit (output)
Input (1xxxx) → dạng bit (input)
Input Register (3xxxx) → analog input
Holding Register (4xxxx) → dữ liệu chính
👉 Ví dụ:
40001 → thanh ghi đầu tiên
40010 → thanh ghi thứ 10
Khi cấu hình phải giống nhau hoàn toàn:
Baudrate (9600, 19200…)
Data bit (thường 8)
Parity (None / Even / Odd)
Stop bit (1 hoặc 2)
Slave ID
👉 Sai 1 thông số là không truyền được
Master đọc thanh ghi 40001 của slave 1:
Gửi:
01 03 00 00 00 01 CRC
Nhận:
01 03 02 00 64 CRC
👉 Giá trị đọc được = 100
Đơn giản, dễ dùng
Rất phổ biến
Không cần license
Dễ debug
Tốc độ không cao
Không linh hoạt (phụ thuộc Master)
Không phù hợp hệ cực lớn
Modbus RTU
Truyền qua RS485
Tốc độ thấp hơn
Cấu hình phức tạp hơn (baudrate, parity…)
Phù hợp hệ nhỏ – trung
Modbus TCP
Truyền qua Ethernet
Tốc độ nhanh hơn
Dễ cấu hình (chỉ cần IP)
Phù hợp hệ lớn, SCADA
Kết nối PLC với biến tần
Đọc đồng hồ điện
Kết nối HMI
SCADA thu thập dữ liệu
Đấu đúng dây A/B (RS485)
Có điện trở cuối đường truyền
Không trùng địa chỉ slave
Kiểm tra dây chống nhiễu
Dùng phần mềm test (Modbus Poll…)
Modbus RTU là giao thức:
Đơn giản
Phổ biến
Dễ triển khai
👉 Gần như mọi hệ thống tự động hóa đều dùng
* Modbus TCP/IP
Modbus TCP/IP là phiên bản hiện đại của Modbus, sử dụng mạng Ethernet (LAN) để truyền dữ liệu thay vì RS485 như RTU.
👉 Hiểu đơn giản:
Modbus TCP = Modbus chạy trên mạng LAN (có IP)
Khác với RTU, Modbus TCP hoạt động theo mô hình:
Client (Master) → gửi yêu cầu
Server (Slave) → phản hồi
👉 Ví dụ:
SCADA / HMI / PC → Client
PLC / biến tần → Server
Modbus TCP sử dụng mạng Ethernet:
Thiết bị kết nối qua Switch
Mỗi thiết bị có IP riêng
Giao tiếp qua cổng 502 (port mặc định)
👉 Ví dụ hệ thống:
PLC (192.168.1.10)
HMI (192.168.1.20)
SCADA (192.168.1.100)
Modbus TCP không dùng CRC như RTU mà dùng header riêng:
[MBAP Header] [Function] [Data]
Transaction ID
Protocol ID
Length
Unit ID
👉 Unit ID dùng để định danh thiết bị (giống Slave ID trong RTU)
01 → Đọc coil
02 → Đọc input
03 → Đọc holding register
04 → Đọc input register
05 → Ghi 1 coil
06 → Ghi 1 register
16 → Ghi nhiều register
👉 Gần như giống 100% Modbus RTU
Coil (0xxxx) → bit output
Input (1xxxx) → bit input
Input Register (3xxxx) → analog
Holding Register (4xxxx) → dữ liệu chính
👉 Ví dụ:
40001 → thanh ghi đầu tiên
40010 → thanh ghi thứ 10
Modbus TCP đơn giản hơn RTU rất nhiều:
IP address (bắt buộc)
Port (mặc định 502)
Unit ID (nếu cần)
👉 Không cần:
Baudrate
Parity
Stop bit
Client gửi yêu cầu đọc thanh ghi:
Function: 03
Address: 40001
Length: 1
Server trả về:
Giá trị thanh ghi
👉 Tất cả diễn ra qua mạng LAN
Tốc độ nhanh
Dễ cấu hình
Kết nối nhiều thiết bị
Tích hợp dễ với SCADA, IT
Phụ thuộc mạng LAN
Không phù hợp môi trường quá nhiễu nếu không thiết kế tốt
Không có cơ chế bảo mật mạnh (cần bổ sung)
Modbus TCP
Truyền qua Ethernet
Có địa chỉ IP
Tốc độ cao
Dễ cấu hình
Dùng trong SCADA, nhà máy lớn
Modbus RTU
Truyền qua RS485
Không có IP
Tốc độ thấp hơn
Cấu hình phức tạp hơn
Dùng trong hệ nhỏ – thiết bị hiện trường
Kết nối PLC với SCADA
HMI đọc dữ liệu PLC qua LAN
Kết nối nhiều PLC trong nhà máy
Giám sát từ xa
Đặt IP cùng dải mạng
Tránh trùng IP
Kiểm tra port 502
Dùng switch công nghiệp
Kiểm tra firewall
Hệ thống lớn
Có mạng LAN
Cần tốc độ cao
SCADA / Web / IoT
Modbus TCP/IP là phiên bản nâng cấp của Modbus:
Nhanh hơn
Dễ dùng hơn
Phù hợp hệ thống hiện đại
👉 Nếu Modbus RTU là “cổ điển”
👉 Thì Modbus TCP là “chuẩn hiện đại” trong tự động hóa
* Modbus ASCII
Modbus ASCII là một biến thể của Modbus sử dụng ký tự dạng text (ASCII) để truyền dữ liệu thay vì dạng nhị phân như RTU.
👉 Hiểu đơn giản:
Modbus ASCII = Modbus truyền dữ liệu dưới dạng “chữ” (có thể đọc được)
Giống các phiên bản khác, Modbus ASCII hoạt động theo mô hình:
Master → gửi yêu cầu
Slave → phản hồi
👉 Quy tắc:
Master hỏi → Slave trả lời
Không có truyền tự do
RS232
RS485
👉 Thực tế:
Vẫn thường dùng RS485 giống RTU
Mỗi byte được biểu diễn bằng 2 ký tự hex
Ví dụ:
Giá trị 0x5A → gửi thành "5A"
Một frame ASCII có dạng:
: [Address] [Function] [Data] [LRC] CR LF
: → bắt đầu frame
Address → địa chỉ thiết bị
Function → mã lệnh
Data → dữ liệu
LRC → kiểm tra lỗi
CR LF → kết thúc dòng
ASCII dùng LRC (Longitudinal Redundancy Check)
Khác với RTU dùng CRC
👉 LRC đơn giản hơn nhưng độ tin cậy thấp hơn CRC
Giống RTU và TCP:
01 → Đọc coil
02 → Đọc input
03 → Đọc holding register
04 → Đọc input register
05 → Ghi coil
06 → Ghi register
👉 Hoàn toàn tương thích với Modbus RTU
Đọc thanh ghi từ slave 1:
:010300000001FB\r\n
👉 Giải thích:
01 → địa chỉ
03 → đọc register
0000 → địa chỉ thanh ghi
0001 → số lượng
FB → LRC
Giống RTU:
Baudrate
Data bit
Parity
Stop bit
Slave ID
👉 Nhưng timing không khắt khe như RTU
Dễ đọc, dễ debug (nhìn là hiểu)
Không yêu cầu timing chặt
Phù hợp khi test hoặc debug
Tốc độ chậm hơn RTU
Tốn băng thông (do gửi dạng text)
Ít được dùng trong thực tế
Modbus ASCII
Dữ liệu dạng text (ASCII)
Có ký tự bắt đầu ":"
Dùng LRC
Dễ đọc, dễ debug
Tốc độ chậm
Modbus RTU
Dữ liệu dạng nhị phân
Không có ký tự hiển thị
Dùng CRC
Khó đọc hơn
Tốc độ nhanh hơn
Debug hệ thống Modbus
Test thiết bị
Hệ thống cũ (legacy)
👉 Thực tế hiện nay:
RTU và TCP dùng nhiều hơn
ASCII ít gặp
Khi cần debug dễ
Khi hệ thống không yêu cầu tốc độ cao
Khi thiết bị chỉ hỗ trợ ASCII
Modbus ASCII là phiên bản:
Dễ hiểu nhất
Dễ debug nhất
Nhưng chậm và ít dùng
👉 Nếu RTU là “chuẩn thực chiến”
👉 TCP là “hiện đại”
👉 Thì ASCII là “phiên bản học và debug”
* CC-Link
CC-Link là một chuẩn truyền thông công nghiệp do
Mitsubishi Electric phát triển, dùng để kết nối PLC với các thiết bị hiện trường như I/O, biến tần, servo…
👉 Hiểu đơn giản:
CC-Link = mạng nội bộ tốc độ cao của Mitsubishi trong hệ tự động hóa
CC-Link được thiết kế để:
Kết nối PLC với remote I/O
Điều khiển biến tần, servo
Truyền dữ liệu nhanh trong hệ thống
👉 Thay thế cho việc kéo quá nhiều dây I/O
CC-Link hoạt động theo mô hình:
Master (PLC) → điều khiển mạng
Slave (thiết bị) → I/O, biến tần…
Intelligent device → thiết bị thông minh
👉 Tất cả thiết bị được kết nối theo dạng bus (daisy chain)
Dạng truyền thống
Tốc độ: 156 kbps → 10 Mbps
Dùng cáp chuyên dụng
CC-Link IE
Dùng Ethernet
Tốc độ cao (1 Gbps)
Hỗ trợ hệ lớn
Dùng cho thiết bị hiện trường
Điều khiển realtime
CC-Link IE TSN
Kết hợp Ethernet + realtime
Hỗ trợ Industry 4.0
Đồng bộ thời gian cực chính xác
Một mạng CC-Link gồm:
1 Master (PLC)
Nhiều Slave
Kết nối dạng bus
👉 Mỗi thiết bị có Station Number (địa chỉ)
CC-Link truyền dữ liệu theo chu kỳ:
PLC gửi dữ liệu xuống thiết bị
Thiết bị gửi dữ liệu về PLC
👉 Gọi là cyclic communication (truyền theo vòng lặp)
Tốc độ cao (so với Modbus RTU)
Truyền dữ liệu ổn định
Đồng bộ tốt
Tích hợp mạnh với Mitsubishi
Phụ thuộc hệ Mitsubishi
Cần module chuyên dụng
Chi phí cao hơn Modbus
CC-Link
Chuẩn riêng Mitsubishi
Tốc độ cao
Truyền theo chu kỳ (realtime)
Dùng trong hệ Mitsubishi
Modbus RTU
Chuẩn mở
Tốc độ thấp hơn
Master hỏi – Slave trả lời
Dùng đa hãng
Kết nối PLC Mitsubishi với I/O
Điều khiển servo, biến tần
Dây chuyền sản xuất
Máy công nghiệp
Dùng PLC Mitsubishi
Cần tốc độ cao
Hệ thống nhiều I/O
Điều khiển realtime
Dùng đúng cáp CC-Link
Cấu hình đúng station number
Kiểm tra termination
Chọn tốc độ phù hợp
👉 CC-Link là “xương sống” kết nối:
PLC
HMI
Servo
Biến tần
👉 Giúp hệ thống chạy đồng bộ và ổn định
CC-Link là chuẩn truyền thông:
Nhanh
Ổn định
Chuyên dùng cho Mitsubishi
👉 Nếu Modbus là “phổ thông”
👉 Thì CC-Link là “cao cấp – nội bộ hãng”
* UART
UART là một chuẩn giao tiếp nối tiếp (serial) dùng để truyền dữ liệu giữa các thiết bị điện tử.
👉 Hiểu đơn giản:
UART = cách 2 thiết bị gửi dữ liệu cho nhau từng bit qua dây TX/RX
UART truyền dữ liệu theo kiểu:
Không có clock chung (asynchronous)
Hai thiết bị phải cấu hình giống nhau
Dữ liệu được truyền theo từng khung (frame):
Start bit → Data → Parity (optional) → Stop bit
TX (Transmit) → gửi dữ liệu
RX (Receive) → nhận dữ liệu
GND → mass chung
👉 Quy tắc đấu dây:
TX thiết bị A → RX thiết bị B
RX thiết bị A → TX thiết bị B
Ví dụ cấu hình phổ biến: 8N1
1 Start bit (luôn = 0)
8 Data bit
Không parity
1 Stop bit (luôn = 1)
👉 Frame sẽ như sau:
0 | 8 bit data | 1
Tốc độ truyền (bit/giây)
Ví dụ: 9600, 115200
👉 2 thiết bị phải giống nhau
Số bit dữ liệu (5–9 bit)
Thường dùng: 8
Kiểm tra lỗi
Các loại: None / Even / Odd
Kết thúc frame
Thường: 1 hoặc 2
Gửi ký tự ‘A’ (ASCII = 65 = 01000001)
Frame UART sẽ là:
Start | 01000001 | Stop
👉 Truyền từng bit một theo thời gian
👉 Rất hay nhầm, cần hiểu rõ:
UART
Là chuẩn truyền dữ liệu (logic)
Mức tín hiệu TTL (0–5V hoặc 0–3.3V)
RS232
Chuẩn điện áp (-12V → +12V)
Khoảng cách ngắn
RS485
Truyền vi sai (A/B)
Khoảng cách xa, chống nhiễu tốt
👉 Tóm lại:
UART = cách truyền
RS232/RS485 = cách mang tín hiệu
Giao tiếp vi điều khiển (Arduino, STM32…)
Debug firmware
Kết nối module (GPS, GSM…)
Giao tiếp PLC – thiết bị ngoại vi
Đơn giản, dễ dùng
Không cần clock
Phổ biến trong embedded
Tốc độ không quá cao
Khoảng cách hạn chế (TTL)
Không hỗ trợ nhiều thiết bị (point-to-point)
👉 Quan trọng:
Modbus RTU thường chạy trên RS485
Bên trong thiết bị vẫn dùng UART để xử lý dữ liệu
👉 Nghĩa là:
UART là “lõi”, RS485 là “vỏ”, Modbus là “ngôn ngữ”
Giao tiếp 2 thiết bị
Embedded system
Debug
Truyền dữ liệu đơn giản
UART là nền tảng của rất nhiều giao tiếp:
Đơn giản
Dễ triển khai
Là “gốc rễ” của RS232, RS485, Modbus
👉 Nếu làm embedded hoặc tự động hóa:
Hiểu UART là bắt buộc
* SPI
SPI là chuẩn giao tiếp nối tiếp tốc độ cao, dùng để kết nối vi điều khiển với các thiết bị ngoại vi như cảm biến, màn hình, bộ nhớ…
👉 Hiểu đơn giản:
SPI = giao tiếp tốc độ cao giữa chip với chip
SPI hoạt động theo mô hình:
Master (thiết bị điều khiển)
Slave (thiết bị ngoại vi)
👉 Master tạo clock (xung nhịp) để đồng bộ dữ liệu
SPI sử dụng 4 dây chính:
MOSI (Master Out Slave In) → Master gửi dữ liệu
MISO (Master In Slave Out) → Slave gửi dữ liệu
SCK (Serial Clock) → xung clock
SS / CS (Slave Select) → chọn thiết bị
Master điều khiển nhiều Slave
Mỗi Slave có 1 chân CS riêng
👉 Khi CS = LOW → thiết bị được chọn
👉 Khi CS = HIGH → thiết bị bị bỏ qua
SPI truyền dữ liệu:
Theo bit đồng bộ với clock
Có thể truyền 2 chiều cùng lúc (full-duplex)
👉 Nghĩa là:
Master gửi → Slave nhận
Đồng thời Slave gửi → Master nhận
Tốc độ truyền
Có thể rất cao (MHz)
Xác định mức idle của clock
Xác định cạnh lấy mẫu dữ liệu
👉 Kết hợp CPOL + CPHA → tạo 4 mode SPI
Master gửi 1 byte:
10101010
👉 Clock chạy → từng bit được truyền
👉 Đồng thời nhận lại dữ liệu từ Slave
SPI
Có clock riêng
Tốc độ rất cao
Full-duplex
Cần nhiều dây
UART
Không có clock
Tốc độ thấp hơn
2 dây (TX/RX)
Dễ dùng
I2C
Có clock
Chỉ 2 dây (SDA, SCL)
Nhiều thiết bị trên bus
Chậm hơn SPI
Tốc độ rất cao
Truyền đồng thời 2 chiều
Độ trễ thấp
Phù hợp realtime
Tốn nhiều chân (dây)
Mỗi slave cần 1 CS riêng
Không có chuẩn địa chỉ
Khó mở rộng
Kết nối cảm biến tốc độ cao
Màn hình LCD / TFT
Flash memory, SD card
ADC, DAC
Cần tốc độ cao
Giao tiếp chip gần nhau
Embedded system
👉 Quan trọng:
SPI dùng trong mạch điện tử / vi điều khiển
Không dùng trực tiếp trong PLC công nghiệp
👉 Nhưng:
Là nền tảng cho thiết bị bên trong
SPI là giao tiếp:
Nhanh
Mạnh
Dùng nhiều trong embedded
👉 Nếu UART là “đơn giản”
👉 I2C là “tiết kiệm dây”
👉 Thì SPI là “tốc độ cao”