Skip to content

1. BIG PICTURE — A MACHINE IS A LAYERED SYSTEM

An industrial machine (máy công nghiệp) is not a single application or a monolithic program. It is a layered system (hệ thống nhiều tầng) composed of multiple responsibilities that must work together reliably under real-world constraints like timing, hardware failures, and operator interaction.

Một máy công nghiệp không phải là một ứng dụng đơn lẻ hay một chương trình nguyên khối. Nó là một hệ thống nhiều tầng gồm nhiều trách nhiệm khác nhau phải phối hợp với nhau một cách đáng tin cậy trong điều kiện thực tế như timing, lỗi phần cứng và tương tác của người vận hành.


Each layer in this architecture has a clear responsibility and communicates with adjacent layers through well-defined interfaces. This separation is not just a design preference—it is a survival requirement in complex machines where debugging, safety, and maintainability are critical.

Mỗi tầng trong kiến trúc này có trách nhiệm rõ ràng và giao tiếp với các tầng lân cận thông qua các interface được định nghĩa rõ ràng. Việc tách biệt này không chỉ là một lựa chọn thiết kế mà là yêu cầu sống còn trong các hệ thống máy phức tạp, nơi việc debug, an toàn và khả năng bảo trì là cực kỳ quan trọng.


A typical high-level architecture includes: UI layer (giao diện vận hành), application/workflow layer (luồng điều khiển), subsystem layer (hệ thống con), hardware abstraction layer – HAL (lớp trừu tượng phần cứng), and device layer (thiết bị).

Một kiến trúc tổng thể điển hình bao gồm: tầng UI (giao diện vận hành), tầng application/workflow (luồng điều khiển), tầng subsystem (hệ thống con), tầng HAL (lớp trừu tượng phần cứng), và tầng device (thiết bị).


2. VISUAL — FULL ARCHITECTURE OVERVIEW

Image

Image

Image

Image

Image

Image

Image

The diagram shows a clear top-down structure: UI → Workflow → Subsystems → HAL → Devices. What matters is not the boxes, but the direction of responsibility and dependency. Higher layers depend on lower layers, but not the other way around.

Sơ đồ thể hiện cấu trúc từ trên xuống rõ ràng: UI → Workflow → Subsystems → HAL → Devices. Điều quan trọng không phải là các khối mà là hướng của trách nhiệm và phụ thuộc. Tầng trên phụ thuộc vào tầng dưới, nhưng không ngược lại.


You should observe two key flows: command flow going downward (control system – hệ thống điều khiển gửi lệnh), and data flow going upward (feedback từ thiết bị). This separation is fundamental to understanding machine behavior.

Bạn cần quan sát hai luồng chính: luồng lệnh đi xuống (hệ thống điều khiển gửi lệnh), và luồng dữ liệu đi lên (feedback từ thiết bị). Sự tách biệt này là nền tảng để hiểu hành vi của máy.


3. UI LAYER — OPERATOR INTERACTION

The UI layer (giao diện người vận hành) is typically built using WPF or WinForms in industrial PC applications. Its job is not to control hardware directly, but to present machine state (trạng thái máy) and allow operator interaction.

Tầng UI thường được xây dựng bằng WPF hoặc WinForms trong các ứng dụng PC công nghiệp. Nhiệm vụ của nó không phải là điều khiển phần cứng trực tiếp, mà là hiển thị trạng thái máy và cho phép người vận hành tương tác.


Operators use the UI to start/stop the machine, configure parameters (cấu hình), monitor results, and respond to alarms. In a wafer inspection system, for example, the UI shows images, defect data, and machine status in real time.

Người vận hành sử dụng UI để start/stop máy, cấu hình tham số, theo dõi kết quả và xử lý cảnh báo. Ví dụ trong hệ thống kiểm tra wafer, UI hiển thị hình ảnh, dữ liệu lỗi và trạng thái máy theo thời gian thực.


The main challenge is handling real-time updates without freezing the UI thread. High-frequency data streams (e.g., camera frames or sensor readings) must be processed asynchronously and safely marshaled to the UI thread.

Thách thức chính là xử lý cập nhật thời gian thực mà không làm treo UI thread. Các luồng dữ liệu tần suất cao (ví dụ: hình ảnh camera hoặc dữ liệu cảm biến) phải được xử lý bất đồng bộ và đưa về UI thread một cách an toàn.


4. WORKFLOW / APPLICATION LAYER — THE BRAIN

The workflow layer (luồng xử lý) acts as the brain of the machine. It orchestrates the sequence of operations using a state machine (máy trạng thái) or workflow engine.

Tầng workflow đóng vai trò như bộ não của máy. Nó điều phối chuỗi hoạt động bằng máy trạng thái hoặc workflow engine.


A typical sequence might look like: Idle → Load → Align → Process → Unload. Each state coordinates multiple subsystem (hệ thống con) actions and waits for conditions to be satisfied.

Một chuỗi hoạt động điển hình có thể là: Idle → Load → Align → Process → Unload. Mỗi trạng thái điều phối nhiều hành động từ các hệ thống con và chờ các điều kiện được thỏa mãn.


This layer must handle long-running processes, pause/resume, retries, and error recovery. In reality, machines rarely run perfectly—timeouts, misalignment, and device errors are normal cases, not exceptions.

Tầng này phải xử lý các tiến trình dài, pause/resume, retry và phục hồi lỗi. Trong thực tế, máy hiếm khi chạy hoàn hảo—timeout, lệch vị trí và lỗi thiết bị là chuyện bình thường, không phải ngoại lệ.


5. SUBSYSTEM LAYER — ORGANIZING COMPLEXITY

Subsystems (hệ thống con) are used to group related functionality and reduce complexity. Instead of one giant system, you split responsibilities into logical units.

Các hệ thống con được dùng để nhóm các chức năng liên quan và giảm độ phức tạp. Thay vì một hệ thống lớn, bạn chia trách nhiệm thành các đơn vị logic.


Examples include motion subsystem (hệ chuyển động), vision subsystem (hệ thị giác), and handling subsystem (hệ vận chuyển). Each subsystem exposes high-level operations to the workflow layer.

Ví dụ bao gồm hệ chuyển động, hệ thị giác và hệ vận chuyển. Mỗi hệ thống con cung cấp các thao tác cấp cao cho tầng workflow.


This separation allows teams to develop and test subsystems independently. In large companies, different teams may own different subsystems.

Sự tách biệt này cho phép các team phát triển và kiểm thử các hệ thống con độc lập. Trong các công ty lớn, mỗi hệ thống con có thể do một team khác nhau phụ trách.


6. HAL — HARDWARE ABSTRACTION LAYER (VERY IMPORTANT)

The hardware abstraction layer – HAL (lớp trừu tượng phần cứng) is one of the most critical layers. It hides low-level device communication and exposes clean, domain-friendly interfaces.

HAL là một trong những tầng quan trọng nhất. Nó che giấu việc giao tiếp thiết bị cấp thấp và cung cấp các interface sạch, phù hợp với domain.


Instead of sending raw commands or dealing with protocols, higher layers call methods like MoveTo(position) or CaptureImage(). This dramatically simplifies the system.

Thay vì gửi lệnh thô hoặc xử lý giao thức, các tầng trên chỉ cần gọi các hàm như MoveTo(position) hoặc CaptureImage(). Điều này giúp đơn giản hóa hệ thống rất nhiều.


The benefits are huge: testability (dễ kiểm thử), simulation (giả lập thiết bị), and vendor independence. You can replace a motor (động cơ) or camera (camera công nghiệp) without rewriting the entire system.

Lợi ích rất lớn: dễ kiểm thử, hỗ trợ giả lập thiết bị và độc lập với nhà cung cấp. Bạn có thể thay thế động cơ hoặc camera mà không cần viết lại toàn bộ hệ thống.


7. DEVICE LAYER — THE REAL WORLD

The device layer (thiết bị) includes physical components like motor (động cơ), sensor (cảm biến), industrial camera (camera công nghiệp), and PLC (bộ điều khiển logic lập trình).

Tầng thiết bị bao gồm các thành phần vật lý như động cơ, cảm biến, camera công nghiệp và PLC.


These devices communicate through industrial protocols and often behave unpredictably. Latency, noise, misalignment, and hardware faults are part of daily operation.

Các thiết bị này giao tiếp thông qua các giao thức công nghiệp và thường có hành vi khó đoán. Độ trễ, nhiễu, lệch và lỗi phần cứng là điều xảy ra hàng ngày.


As a software engineer, you must assume that devices can fail, disconnect, or return invalid data at any time. Defensive programming is mandatory here.

Là một kỹ sư phần mềm, bạn phải luôn giả định rằng thiết bị có thể lỗi, mất kết nối hoặc trả về dữ liệu sai bất cứ lúc nào. Lập trình phòng thủ là bắt buộc.


8. VISUAL — CONTROL CABINET & DEVICES

Image

Image

Image

Image

Image

Image

Image

These images show control cabinets (tủ điều khiển), wiring (dây kết nối), PLCs, and motion controllers. This is where software meets the physical world.

Các hình ảnh này cho thấy tủ điều khiển, dây kết nối, PLC và bộ điều khiển chuyển động. Đây là nơi phần mềm kết nối với thế giới vật lý.


What looks simple in code becomes extremely complex in reality: hundreds of wires, multiple devices, and strict safety requirements. This complexity is why architecture matters so much.

Những gì nhìn đơn giản trong code lại trở nên cực kỳ phức tạp ngoài thực tế: hàng trăm dây nối, nhiều thiết bị và yêu cầu an toàn nghiêm ngặt. Đây là lý do kiến trúc hệ thống quan trọng đến vậy.


9. DATA & COMMAND FLOW

Commands flow downward: UI → workflow → subsystem → HAL → device. This is how the control system (hệ thống điều khiển) executes actions.

Luồng lệnh đi xuống: UI → workflow → subsystem → HAL → thiết bị. Đây là cách hệ thống điều khiển thực thi hành động.


Data flows upward: device → HAL → subsystem → UI. This includes sensor readings, status updates, and results.

Luồng dữ liệu đi lên: thiết bị → HAL → subsystem → UI. Bao gồm dữ liệu cảm biến, trạng thái và kết quả.


This communication is asynchronous and event-driven. Devices do not respond instantly, and the system must react to events rather than assuming immediate results.

Việc giao tiếp này là bất đồng bộ và hướng sự kiện. Thiết bị không phản hồi ngay lập tức, và hệ thống phải phản ứng theo sự kiện thay vì giả định kết quả tức thì.


10. PC vs PLC vs EMBEDDED CONTROLLERS

Industrial machines often use a combination of PC (máy tính công nghiệp), PLC, and embedded controllers (bộ điều khiển nhúng). Each has a different role.

Máy công nghiệp thường sử dụng kết hợp PC, PLC và bộ điều khiển nhúng. Mỗi loại có vai trò khác nhau.


The PC handles UI, workflow, and heavy data processing. The PLC handles real-time control (điều khiển thời gian thực) and safety logic. Embedded controllers handle device-specific tasks.

PC xử lý UI, workflow và xử lý dữ liệu nặng. PLC xử lý điều khiển thời gian thực và logic an toàn. Bộ điều khiển nhúng xử lý các nhiệm vụ riêng của thiết bị.


They coexist because no single system can handle all requirements efficiently. PLCs are reliable and deterministic, while PCs are flexible and powerful.

Chúng cùng tồn tại vì không có hệ thống nào có thể xử lý tất cả yêu cầu một cách hiệu quả. PLC đáng tin cậy và xác định, trong khi PC linh hoạt và mạnh mẽ.


11. MENTAL MODEL FOR SOFTWARE ENGINEERS

For a .NET engineer, this architecture maps closely to clean architecture. The layered system (hệ thống nhiều tầng) is similar to application layering.

Đối với kỹ sư .NET, kiến trúc này gần giống với clean architecture. Hệ thống nhiều tầng tương tự như phân tầng trong ứng dụng.


HAL is like a repository/adapter, subsystem is like a domain service, and workflow is like an orchestrator.

HAL giống repository/adapter, subsystem giống domain service, và workflow giống orchestrator.


The key difference is hardware constraints: timing, concurrency, and physical failures. These make the system much less predictable than typical business software.

Sự khác biệt chính là các ràng buộc phần cứng: timing, concurrency và lỗi vật lý. Điều này làm hệ thống khó đoán hơn nhiều so với phần mềm business thông thường.


12. WHY THIS ARCHITECTURE MATTERS

A well-designed architecture reduces coupling between layers and improves maintainability. It allows teams to isolate problems and test components independently.

Một kiến trúc tốt giúp giảm sự phụ thuộc giữa các tầng và cải thiện khả năng bảo trì. Nó cho phép các team cô lập vấn đề và kiểm thử từng phần độc lập.


In real-world machines, bad architecture leads to unstable systems, difficult debugging, and costly downtime. Good architecture leads to predictable behavior and faster development.

Trong thực tế, kiến trúc kém dẫn đến hệ thống không ổn định, khó debug và downtime tốn kém. Kiến trúc tốt giúp hệ thống hoạt động ổn định và phát triển nhanh hơn.


13. COMMON MISTAKES

A common mistake is mixing UI and hardware logic. This creates tightly coupled systems that are hard to test and maintain.

Một lỗi phổ biến là trộn logic UI với logic phần cứng. Điều này tạo ra hệ thống phụ thuộc chặt, khó kiểm thử và bảo trì.


Another mistake is skipping abstraction layers like HAL, leading to direct device coupling. This makes the system fragile and vendor-dependent.

Một lỗi khác là bỏ qua các tầng trừu tượng như HAL, dẫn đến phụ thuộc trực tiếp vào thiết bị. Điều này khiến hệ thống dễ vỡ và phụ thuộc vào nhà cung cấp.


Ignoring asynchronous communication is also dangerous. Assuming synchronous behavior leads to race conditions and unstable workflows.

Bỏ qua giao tiếp bất đồng bộ cũng rất nguy hiểm. Giả định hành vi đồng bộ sẽ dẫn đến race condition và workflow không ổn định.


14. KEY TERMINOLOGY (EN ↔ VI)

EnglishVietnameseMeaning
architecturekiến trúcoverall system design
layertầnglevel of responsibility
subsystemhệ thống congrouped functionality
hardware abstractiontrừu tượng phần cứnghiding device complexity
devicethiết bịphysical component
workflowluồng xử lýoperation sequence
control systemhệ thống điều khiểnexecutes machine logic

15. FURTHER READING

Look into industrial architectures from companies like Siemens and Beckhoff. Their materials show real-world system designs used in factories.

Bạn nên tìm hiểu kiến trúc công nghiệp từ các công ty như Siemens và Beckhoff. Tài liệu của họ thể hiện các thiết kế hệ thống thực tế được sử dụng trong nhà máy.


Also explore blogs and documentation about PC-based control systems and modern machine software design. These are much closer to what you will build as a .NET engineer.

Ngoài ra, hãy tìm hiểu thêm các blog và tài liệu về hệ thống điều khiển dựa trên PC và thiết kế phần mềm máy hiện đại. Đây là những thứ gần với công việc bạn sẽ làm với .NET.

Docs-first project memory for AI-assisted implementation.