1. BIG PICTURE — WHAT A PLC / CONTROLLER REALLY IS
A PLC (bộ điều khiển lập trình) or controller (bộ điều khiển) is not just “a computer that runs code.” In a real industrial machine, it is the execution engine that continuously reads the physical world (sensor – cảm biến), makes decisions, and drives physical actions (actuator – cơ cấu chấp hành) in real-time (thời gian thực).
PLC (bộ điều khiển lập trình) không chỉ là “một máy tính chạy code.” Trong máy công nghiệp thực tế, nó là bộ máy thực thi liên tục đọc thế giới vật lý (sensor – cảm biến), đưa ra quyết định, và điều khiển hành động vật lý (actuator – cơ cấu chấp hành) theo thời gian thực (real-time).
Think of it like this:
sensor → controller → actuator
This loop runs continuously, hundreds or thousands of times per second, forming the heartbeat of the machine.
Hãy hình dung như sau:
sensor → controller → actuator
Vòng lặp này chạy liên tục, hàng trăm đến hàng nghìn lần mỗi giây, tạo thành “nhịp tim” của máy.
The PLC is called the “brain” because it decides what should happen next, but it is a very specific kind of brain: simple, predictable, and extremely reliable. It does not try to be smart — it tries to be correct every single time.
PLC được gọi là “bộ não” vì nó quyết định điều gì sẽ xảy ra tiếp theo, nhưng đây là một loại “não” rất đặc biệt: đơn giản, dễ dự đoán, và cực kỳ đáng tin cậy. Nó không cố thông minh — nó cố chính xác tuyệt đối mỗi lần.
Compared to a general-purpose computer (máy tính thông thường), a PLC sacrifices flexibility for determinism (tính xác định). Your .NET app may freeze, GC, or delay — a PLC is designed not to.
So với máy tính thông thường (general-purpose computer), PLC đánh đổi sự linh hoạt để lấy tính xác định (determinism). Ứng dụng .NET của bạn có thể bị treo, GC, hoặc trễ — PLC thì được thiết kế để không xảy ra những điều đó.
2. HOW IT ACTUALLY WORKS (REAL BEHAVIOR)
A PLC does not run code like a typical program with events and callbacks. It runs a scan cycle (chu kỳ quét) — a loop that never stops.
PLC không chạy code như chương trình thông thường với event hay callback. Nó chạy theo chu kỳ quét (scan cycle) — một vòng lặp không bao giờ dừng.
Each cycle has 3 steps:
Read inputs (đọc ngõ vào)
Execute logic (chạy logic)
Update outputs (cập nhật ngõ ra)
Mỗi chu kỳ có 3 bước:
- Đọc ngõ vào
- Thực thi logic
- Cập nhật ngõ ra
This happens in milliseconds. For example, every 5 ms, the PLC re-evaluates the entire system.
Quá trình này diễn ra trong mili-giây. Ví dụ, mỗi 5 ms, PLC đánh giá lại toàn bộ hệ thống.
The key idea is deterministic behavior (tính xác định) — the same input always produces the same output within a known time.
Ý tưởng cốt lõi là tính xác định (deterministic behavior) — cùng một input sẽ luôn tạo ra cùng một output trong thời gian đã biết.
In machine control, timing is everything. A delay of even a few milliseconds can mean:
missing a fast-moving part
damaging hardware
causing safety risks
Trong điều khiển máy, thời gian là tất cả. Một độ trễ vài mili-giây có thể dẫn đến:
- bỏ lỡ vật thể di chuyển nhanh
- làm hỏng phần cứng
- gây nguy hiểm an toàn
3. PLC VS INDUSTRIAL PC (IPC)
A PLC (bộ điều khiển lập trình) is built for reliability and determinism. An industrial PC (IPC – máy tính công nghiệp) is built for flexibility and processing power.
PLC (bộ điều khiển lập trình) được thiết kế cho độ tin cậy và tính xác định. IPC (máy tính công nghiệp) được thiết kế cho sự linh hoạt và sức mạnh xử lý.
PLC characteristics:
extremely stable
deterministic timing
limited programming model
Đặc điểm PLC:
- cực kỳ ổn định
- timing xác định
- mô hình lập trình hạn chế
IPC characteristics:
runs .NET, C#, UI (HMI – giao diện người-máy)
complex logic, data processing
not strictly deterministic
Đặc điểm IPC:
- chạy .NET, C#, UI (HMI – giao diện người-máy)
- xử lý logic phức tạp
- không đảm bảo tính xác định tuyệt đối
In real machines, you almost always see both together:
PLC handles real-time control
IPC handles UI, workflow, data, integration
Trong máy thực tế, bạn gần như luôn thấy cả hai cùng tồn tại:
- PLC xử lý điều khiển thời gian thực
- IPC xử lý UI, workflow, dữ liệu, tích hợp
4. I/O — HOW CONTROLLER TALKS TO THE WORLD
A PLC interacts with the real world through I/O (ngõ vào/ra). This is where software meets physics.
PLC tương tác với thế giới thực thông qua I/O (ngõ vào/ra). Đây là nơi phần mềm gặp thế giới vật lý.
Digital I/O:
ON/OFF signals (0/1)
example: button pressed, sensor triggered
Digital I/O:
- tín hiệu ON/OFF (0/1)
- ví dụ: nút nhấn, cảm biến kích hoạt
Analog I/O:
continuous values (0–10V, 4–20mA)
example: temperature, pressure
Analog I/O:
- giá trị liên tục (0–10V, 4–20mA)
- ví dụ: nhiệt độ, áp suất
In software, these map to variables:
input bit → sensor state
output bit → actuator command
Trong phần mềm, chúng ánh xạ thành biến:
- input bit → trạng thái cảm biến
- output bit → lệnh cho actuator
This mapping is critical — if it’s wrong, your software logic is correct but the machine behaves incorrectly.
Việc ánh xạ này cực kỳ quan trọng — nếu sai, logic phần mềm đúng nhưng máy vẫn hoạt động sai.
5. PROGRAMMING PLC
PLC programming is very different from typical .NET development.
Lập trình PLC rất khác so với phát triển .NET thông thường.
Common languages:
ladder logic (logic bậc thang)
function block diagram
structured text (giống Pascal-like)
Các ngôn ngữ phổ biến:
- logic bậc thang (ladder logic)
- sơ đồ khối chức năng
- structured text (giống Pascal)
Ladder logic looks like electrical circuits. It’s designed so electricians can understand and debug it.
Ladder logic trông giống sơ đồ mạch điện. Nó được thiết kế để kỹ thuật viên điện có thể hiểu và debug.
The biggest mindset shift:
.NET = event-driven
PLC = scan-based
Sự khác biệt lớn nhất về tư duy:
- .NET = event-driven
- PLC = scan-based
You don’t “wait for events.” You continuously evaluate conditions every cycle.
Bạn không “chờ event.” Bạn liên tục kiểm tra điều kiện mỗi chu kỳ.
6. REAL-TIME & DETERMINISM
Real-time (thời gian thực) does NOT mean “fast.” It means predictable timing.
Real-time (thời gian thực) KHÔNG có nghĩa là “nhanh.” Nó có nghĩa là thời gian có thể dự đoán được.
A PLC guarantees:
logic executes within fixed time
outputs update at predictable intervals
PLC đảm bảo:
- logic được thực thi trong thời gian cố định
- output được cập nhật theo chu kỳ dự đoán được
Why this matters:
a delayed actuator may collide with hardware
a missed sensor signal may skip a defect
Tại sao điều này quan trọng:
- actuator trễ có thể va chạm phần cứng
- bỏ lỡ tín hiệu cảm biến có thể bỏ sót lỗi
Normal software has jitter (dao động thời gian). PLC minimizes it.
Phần mềm thông thường có jitter (dao động thời gian). PLC giảm thiểu điều này tối đa.
7. REAL-WORLD PROBLEMS
In real systems, most problems are NOT in code — they are in the physical world.
Trong hệ thống thực tế, phần lớn vấn đề KHÔNG nằm ở code — mà nằm ở thế giới vật lý.
Common issues:
wiring mistakes (đấu dây sai)
signal noise (nhiễu tín hiệu)
loose connections
faulty sensors
Các vấn đề phổ biến:
- đấu dây sai
- nhiễu tín hiệu
- kết nối lỏng
- cảm biến hỏng
These show up as:
random ON/OFF signals
intermittent failures
“ghost” behavior
Chúng biểu hiện thành:
- tín hiệu ON/OFF ngẫu nhiên
- lỗi lúc có lúc không
- hành vi “ma”
Debugging is hard because:
software looks correct
logs may not capture physical issues
Debug rất khó vì:
- phần mềm trông đúng
- log không phản ánh lỗi vật lý
8. HOW .NET / SOFTWARE ENGINEERS INTERACT WITH PLC
As a .NET engineer, you rarely program the PLC directly. You interact with it via communication protocols.
Là kỹ sư .NET, bạn hiếm khi lập trình PLC trực tiếp. Bạn tương tác với nó thông qua các giao thức.
Common protocols:
Modbus
OPC UA
Ethernet/IP
Các giao thức phổ biến:
- Modbus
- OPC UA
- Ethernet/IP
Your responsibilities:
build HMI (UI – giao diện người-máy)
orchestrate workflows
log and monitor system behavior
Trách nhiệm của bạn:
- xây dựng HMI (UI)
- điều phối workflow
- logging và monitoring hệ thống
Clear separation:
PLC = real-time control
PC = logic, UI, coordination
Phân tách rõ ràng:
- PLC = điều khiển thời gian thực
- PC = logic, UI, điều phối
9. SIMPLE END-TO-END EXAMPLE
Let’s walk through a simple case: “Press a button to start a machine.”
Hãy đi qua một ví dụ đơn giản: “Nhấn nút để khởi động máy.”
Step-by-step:
Operator presses button → digital input ON
PLC reads input in next scan cycle
Logic decides: start motor
Output signal sent → actuator (motor) runs
Sensor confirms movement
Từng bước:
- Người vận hành nhấn nút → input ON
- PLC đọc input ở chu kỳ tiếp theo
- Logic quyết định: chạy motor
- Output được gửi → actuator (motor) chạy
- Cảm biến xác nhận chuyển động
This entire flow happens in milliseconds.
Toàn bộ quá trình diễn ra trong vài mili-giây.
10. HOW TO THINK ABOUT CONTROLLERS
A PLC is a deterministic execution engine, not a general-purpose application platform.
PLC là một bộ máy thực thi mang tính xác định, không phải nền tảng ứng dụng đa năng.
You should NOT:
put complex business logic in PLC
build flexible workflows inside PLC
Bạn KHÔNG nên:
- đưa logic nghiệp vụ phức tạp vào PLC
- xây workflow linh hoạt trong PLC
Instead:
keep PLC simple, reliable, predictable
push complexity to IPC (.NET, services)
Thay vào đó:
- giữ PLC đơn giản, đáng tin cậy, dễ dự đoán
- đẩy phần phức tạp sang IPC (.NET, services)
Good system design is about choosing what runs where.
Thiết kế hệ thống tốt là chọn đúng thứ chạy ở đâu.
This is the biggest mindset shift when entering industrial systems.
Đây là thay đổi tư duy lớn nhất khi bước vào lĩnh vực hệ thống công nghiệp.