Skip to content

1. BIG PICTURE — WHAT A PLC / CONTROLLER REALLY IS

Image

Image

Image

Image

Image

Image

Image

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)

Image

Image

Image

Image

Image

Image

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:

  1. Read inputs (đọc ngõ vào)

  2. Execute logic (chạy logic)

  3. Update outputs (cập nhật ngõ ra)

Mỗi chu kỳ có 3 bước:

  1. Đọc ngõ vào
  2. Thực thi logic
  3. 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)

Image

Image

Image

Image

Image

Image

Image

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

Image

Image

Image

Image

Image

Image

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

Image

Image

Image

Image

Image

Image

Image

Image

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

Image

Image

Image

Image

Image

Image

Image

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

Image

Image

Image

Image

Image

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

Image

Image

Image

Image

Image

Image

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

Image

Image

Image

Image

Image

Image

Image

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:

  1. Operator presses button → digital input ON

  2. PLC reads input in next scan cycle

  3. Logic decides: start motor

  4. Output signal sent → actuator (motor) runs

  5. Sensor confirms movement

Từng bước:

  1. Người vận hành nhấn nút → input ON
  2. PLC đọc input ở chu kỳ tiếp theo
  3. Logic quyết định: chạy motor
  4. Output được gửi → actuator (motor) chạy
  5. 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.

Docs-first project memory for AI-assisted implementation.